トラップで一時的なルートを削除する

トラップで一時的なルートを削除する

次のスクリプトがあります。

#!/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次のコマンドを再実行して、.exit-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

おすすめ記事