正常終了したか中断されたかにかかわらず、特定のbashスクリプトが終了するたびに実行する必要がある汎用クリーンアップコードがあります。私はこれを達成するためにtrap "..." EXIT
疑似信号を使うと思った。「トラップ」ブロックの宣言後に変数を検出しないバッシュ信号キャプチャが変更されました
一般的なクリーンアップに加えて、スクリプトが正常に完了した場合にのみ実行する必要がある特定のクリーンアップもあります。私は、トラップブロックテストを変数にすることでこれを引き起こすことができると考えました。
#!/bin/bash
done=false;
trap "{
#generic cleanup code goes here.
if $done
then
#cleanup to be done only on completion goes here.
echo Test;
fi
}" EXIT
#main script goes here
done=true;
しかし、これは機能しません。次のコードを実行すると、 "Test"がエコーされません。 done=true;
の後に明示的なexit
コールを追加しても、何も変更されません。私は何が欠けていますか?
乾杯!