質問

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

他のヒント

たぶん、あなたが望むことを単純に行う構造で特別に扱いたい出口コード(「または」を採用し、「構造ではない場合」を使用して出口コードを分析する)を特別に扱うステートメントを単純に包むことができます。

それはよりクリーンなプログラミングスタイルのようですね。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top