我一直在各地搜索,我开始相信除了拥有全局变量之外别无他法,但我相信stackoverflow.com中的大师可以帮助我:
bash中是否有通过向其传递参数来捕获函数的方法?
例如,trap <function_name> <arg_1> <arg_2> SIGINT
?
答案 0 :(得分:19)
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
答案 1 :(得分:2)
也许我误解了你,但......这是合法的:
trap "cp /etc/passwd $HOME/p" SIGINT
trap 'cp /etc/passwd /tmp/p; echo wooo hoo' SIGINT
答案 2 :(得分:1)
我不确定我是否正确理解你的意思,但是如果你想让信号处理程序调用一个函数并传递参数,那么trap "function arg1 arg2" SIGNAL
应该可行。例如,trap "ls -lh /" INT
将导致shell中的Ctrl + C导致调用ls -lh /
(带有2个args的程序)。