1

kshでカスタムの偽の信号を実装する方法はありますか?現在、ERR信号をキャプチャして終了しています。ただし、変更により、成功を返さない可能性のある呼び出しがありますが、それは有効な条件です。このような場合、この呼び出しが別の信号を生成するか、ERRを別の方法で処理することを確認したいと思います。それを行う方法はありますか?

4

2 に答える 2

2

kill現在のシェルに必要な信号を送信するために使用できます。exitサブシェルまたは関数で使用して、return必要なエラー コードを設定できます。

このスクリプトを試してください:

#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"

例:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done
于 2010-12-17T01:02:19.207 に答える
0

おそらく、特別に処理したい終了コードを持つステートメントを、単に必要なことを実行する構造でラップするだけで済みます (「or」または「if not」構造を使用し、終了コードを分析します)。

これは、はるかにクリーンなプログラミング スタイルのように思えますね。

于 2010-12-16T22:13:51.937 に答える