我有一个如下所示的脚本:
#!/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
通过重新运行不包含-rf
在rm
.退出时:
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