通过 trap 删除临时方向

通过 trap 删除临时方向

我有一个如下所示的脚本:

#!/bin/bash
set -e 

tmpdir=$(mktemp -d)
pushd $tmpdir
trap 'popd && rm -rf $tmpdir' EXIT

# Business logic which may succeed or fail...
/bin/false

当它退出时,一切popd都很好,但它不会删除临时目录。看来$tmpdir这个陷阱并没有解决,但是我们该如何克服呢?

我验证了$tmpdir通过重新运行不包含-rfrm.退出时:

rm: missing operand 

而不是预期的

rm: cannot remove '/tmp/tmp.Y1SdoY5dSu/': Is a directory

答案1

没关系,这是一个错字:

$tmpdir$tempdir

我运行的实际脚本相当于:

#!/bin/bash
set -e 

tmpdir=$(mktemp -d)
pushd $tmpdir
trap 'popd && rm -rf $tempdir' EXIT

# Business logic which may succeed or fail...
/bin/false

相关内容