私はどこでも検索してきたと私はグローバル変数を持つが、以外に、私はstackoverflow.comでの第一人者のは、私を助けることができるかもしれ信じることを実行する方法はありませんことを信じるように来ている:引数を渡すことによる関数のトラップ?
があります引数を渡すことによって関数をトラップするbashの方法
たとえば、trap <function_name> <arg_1> <arg_2> SIGINT
?
私はどこでも検索してきたと私はグローバル変数を持つが、以外に、私はstackoverflow.comでの第一人者のは、私を助けることができるかもしれ信じることを実行する方法はありませんことを信じるように来ている:引数を渡すことによる関数のトラップ?
があります引数を渡すことによって関数をトラップするbashの方法
たとえば、trap <function_name> <arg_1> <arg_2> SIGINT
?
trap
では任意のコマンド(または一連のコマンド)を指定できますが、そのコマンドを1つの引数として渡す必要があります。シェルはSIGINTを受信するたびに
foo bar baz | bip && fred barney ; wilma
:たとえば、この:
trap 'foo bar baz | bip && fred barney ; wilma' SIGINT
はこれを実行します。私はあなたを誤解してる
たぶんtrap '<function> <arg_1> <arg_2>' SIGINT
私は私が正しくあなたが何を意味するか理解していませんシグナルハンドラに関数を呼び出してパラメータを渡す場合は、trap "function arg1 arg2" SIGNAL
が動作するはずです。たとえばtrap "ls -lh /" INT
の場合、シェルのCtrl + Cはls -lh /
(2 argsのプログラム)が呼び出されます。
Yeap!ありがとう:] – Kounavi
実際には、トラップ "myfunction $ arg_1 $ arg_2"を呼び出してから動作しませんでした。SIGINT SIGTERMは、Ctrl-Cが押されたときに$ arg_1 $ arg_2の古い値が保存され、ラッパー関数を使うか、引数をグローバルにするかどうかは、私が意図した通りにすることができないからです:/ P.S .:あなたの例のようにdouble_quotesを使用していても問題はありませんか? – Kounavi
@Kounavi:あなたが推測したように、二重引用符ではなく一重引用符を使用する必要があります。 – ruakh