質問
KSHにカスタム偽の信号を実装する方法はありますか?現在、ERR信号をキャプチャして終了しています。ただし、変更により、成功を取り戻さない可能性のある呼び出しがありますが、それは有効な条件です。そのような場合、この呼び出しが異なる信号を生成するか、エラーを異なる方法で処理することを確認したいと思います。それをする方法はありますか?
解決
使用できます 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
他のヒント
たぶん、あなたが望むことを単純に行う構造で特別に扱いたい出口コード(「または」を採用し、「構造ではない場合」を使用して出口コードを分析する)を特別に扱うステートメントを単純に包むことができます。
それはよりクリーンなプログラミングスタイルのようですね。
所属していません StackOverflow