我一直在到處尋找,我開始相信,有沒有辦法做到這一點除了具有全局變量,但我相信大師在stackoverflow.com也許能夠幫助我:通過傳遞參數來捕獲函數?
有任何方式在bash中通過傳遞參數來捕獲函數?
例如,trap <function_name> <arg_1> <arg_2> SIGINT
?
我一直在到處尋找,我開始相信,有沒有辦法做到這一點除了具有全局變量,但我相信大師在stackoverflow.com也許能夠幫助我:通過傳遞參數來捕獲函數?
有任何方式在bash中通過傳遞參數來捕獲函數?
例如,trap <function_name> <arg_1> <arg_2> SIGINT
?
trap
可讓您指定任意命令(或命令序列),但必須將該命令作爲單個參數傳遞。例如,這樣的:每當接收外殼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
將導致shell中的Ctrl + C導致調用ls -lh /
(帶有2個參數的程序)。
Yeap!感謝:] – Kounavi 2012-02-29 19:00:30
事實上,自從調用陷阱「myfunction $ arg_1 $ arg_2」以來,它並沒有工作。SIGINT SIGTERM意味着當按Ctrl-C時,$ arg_1 $ arg_2的舊值被保存,而不是更新的值。猜猜我會使用一個包裝函數或使參數爲全局的,因爲我不能按照我的意圖來實現這個工作:/ P.S .:重要的是,我使用double_quotes而不是像你的例子那樣使用單個函數嗎? – Kounavi 2012-02-29 21:50:38
@Kounavi:正如你猜測的那樣 - 你需要使用單引號,而不是雙引號。 – ruakh 2012-02-29 22:10:34