14

我一直在到处搜索,我开始相信除了拥有全局变量之外别无他法,但我相信 stackoverflow.com 中的大师可能会帮助我:

bash 中是否有任何方法可以通过向函数传递参数来捕获函数?
例如,trap <function_name> <arg_1> <arg_2> SIGINT

4

3 回答 3

26

trap允许您指定任意命令(或命令序列),但您必须将该命令作为单个参数传递。例如,这个:

trap 'foo bar baz | bip && fred barney ; wilma' SIGINT

将运行这个:

foo bar baz | bip && fred barney ; wilma

每当 shell 收到 SIGINT。就您而言,听起来您想要:

trap '<function> <arg_1> <arg_2>' SIGINT
于 2012-02-29T18:43:22.040 回答
2

也许我误解了你,但是......这是合法的:

trap "cp /etc/passwd $HOME/p" SIGINT
trap 'cp /etc/passwd /tmp/p; echo wooo hoo' SIGINT
于 2012-02-29T18:43:42.020 回答
1

我不确定我是否正确理解你的意思,但如果你想让信号处理程序调用一个函数并传递它的参数,trap "function arg1 arg2" SIGNAL应该可以工作。例如trap "ls -lh /" INT,将导致您的 shell 中的 Ctrl+C 导致ls -lh /(具有 2 个参数的程序)被调用。

于 2012-02-29T18:48:27.487 回答