質問

私は、シェルスクリプトに取り組んで、私が渡って来る可能性のあるさまざまな終了コードを処理したいのです。物事を試すために、私はこのスクリプトを使用しています:

#!/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 0exit 0またはexit 1

のいずれかに派遣します

他のヒント

それはちょうど終了コードです、それはHUPを意味するものではありません。だからあなたのtrap ... 1がHUPを探していますが、出口がちょうど終了です。

ERR、EXIT、RETURNとDEBUG:

あなたはtrap -lを実行して一覧表示することができ、システムの信号に加えて、あなたは、いくつかの特別なバッシュsigspecsを使用することができます。すべてのケースでは、読みやすくするために、信号の名前ではなく番号を使用する必要があります。

を使用することもでき||演算子、||失敗したときB、bが実行されます。

#!/bin/sh

failed
{
    echo "Failed $*"
    exit 1
}

dosomething arg1 || failed "some comments"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top