我有脚本a.sh和b.sh,其中我将ip作为参数传递。
我尝试将其作为
运行sh -x a.sh 172.19.57.21 & b.sh 172.19.57.21 &
但我只看到第一个脚本运行。
答案 0 :(得分:2)
当您运行sh -x a.sh 172.19.57.21 & b.sh 172.19.57.21 &
:
sh -x a.sh 172.19.57.21
是一个命令,&
立即将其发送到后台
b.sh 172.19.57.21
是另一个命令,再次&
将其置于后台
在我看来,问题是脚本b.sh
不可执行,因为你没有将它作为shell的参数运行(与a.sh
不同),它在{{1}中失败了搜索。
您也可以将PATH
作为shell的参数运行,例如:
b.sh
或者如果两个脚本都是可执行文件并且具有适当的shebang:
sh a.sh 172.19.57.21 & sh b.sh 172.19.57.21 &
我建议使用一个包装器来获取参数IP地址一次,并从包装器中调用所需的脚本,就像一个小函数一样:
./a.sh 172.19.57.21 & ./b.sh 172.19.57.21 &
现在,您可以这样做:
wrapper() {
/path/to/a.sh "$@" &
/path/to/b.sh "$@" &
}
答案 1 :(得分:0)
在
之类的命令之间使用;
sh -x a.sh 172.19.57.21 &; sh -x b.sh 172.19.57.21 &