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