シェルの終了コードをトラップ
-
19-09-2019 - |
質問
私は、シェルスクリプトに取り組んで、私が渡って来る可能性のあるさまざまな終了コードを処理したいのです。物事を試すために、私はこのスクリプトを使用しています:
#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 1
exit 1;
私は何かが欠けていたとし、それは私が罠自分の「1番出口」をすることはできませんようです。私はトラップしようとするのであれば0、すべてがうまくいくます:
#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 0
exit
私はHUP(1)終了コードをトラップについて知っておくべきものはありますか?
解決
信号にtrap
ディスパッチプロセスがトラップを、(例えば、kill
から)、ではない終了コードで受信... 0は、プロセス終了のために予約されています。 trap /blah/blah 0
はexit 0
またはexit 1
他のヒント
それはちょうど終了コードです、それはHUPを意味するものではありません。だからあなたのtrap ... 1
がHUPを探していますが、出口がちょうど終了です。
あなたはtrap -l
を実行して一覧表示することができ、システムの信号に加えて、あなたは、いくつかの特別なバッシュsigspecsを使用することができます。すべてのケースでは、読みやすくするために、信号の名前ではなく番号を使用する必要があります。
を使用することもでき||演算子、||失敗したときB、bが実行されます。
#!/bin/sh
failed
{
echo "Failed $*"
exit 1
}
dosomething arg1 || failed "some comments"
所属していません StackOverflow