RAII或';最后';bash中的仿真

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 $

我正在寻找在bash的函数中模拟RAII或“finally”的最佳实践

使用陷阱机制是可以接受的,但它必须全部发生在子shell中。我正在寻找能够将脚本分解成函数的方法,这些函数可以在脚本完成后进行清理

举一个例子,假设我想创建一个目录并挂载一个文件系统,在各种错误情况可能发生时四处查看

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