特定のbashスクリプトが正常に終了したか中断されたかに関係なく、終了するたびに実行する必要のある一般的なクリーンアップコードがたくさんあります。これを実現するために疑似信号を使用すると思いましtrap "..." EXIT
た。
一般的なクリーンアップに加えて、スクリプトが正常に完了した場合にのみ実行する必要がある特定のクリーンアップも1つあります。'trap'ブロックに変数をテストさせることで、これをトリガーできると思いました。
#!/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;
ただし、これは機能しません。次のコードを実行しても、「テスト」がエコーされることはありません。exit
後に明示的な呼び出しを追加しても、done=true;
何も変更されません。私は何が欠けていますか?
乾杯!