RAII或';最后';bash中的仿真
我正在寻找在bash的函数中模拟RAII或“finally”的最佳实践 使用陷阱机制是可以接受的,但它必须全部发生在子shell中。我正在寻找能够将脚本分解成函数的方法,这些函数可以在脚本完成后进行清理 举一个例子,假设我想创建一个目录并挂载一个文件系统,在各种错误情况可能发生时四处查看RAII或';最后';bash中的仿真,bash,raii,finally,Bash,Raii,Finally,我正在寻找在bash的函数中模拟RAII或“finally”的最佳实践 使用陷阱机制是可以接受的,但它必须全部发生在子shell中。我正在寻找能够将脚本分解成函数的方法,这些函数可以在脚本完成后进行清理 举一个例子,假设我想创建一个目录并挂载一个文件系统,在各种错误情况可能发生时四处查看 my_func() { local mnt=$(mktemp -d) $MAGIC 'rmdir $mnt' # RIAA-style cleanup mount /dev/disk $
my_func() {
local mnt=$(mktemp -d)
$MAGIC 'rmdir $mnt' # RIAA-style cleanup
mount /dev/disk $mnt
$MAGIC 'umount $mnt' # another RIAA-style cleanup
if [ $foo blash ]; then
echo "Nah, $foo is blash, please blargh!"
return 1
fi
...
if [ ! -f $mnt/file ]; then
echo "File does not exist, blargh!"
return 1
fi
...
if ! grep -q 'blargh!!!' $mnt/file; then
echo "Blargh!!! not found, blargh!"
return 1
fi
...
echo "Success, nice!"
...
}
您可能正在寻找
陷阱
,例如
trap "rmdir $mnt" EXIT