如何使用参数

时间:2017-08-31 05:24:55

标签: bash shell

我有脚本a.sh和b.sh,其中我将ip作为参数传递。

我尝试将其作为

运行
sh -x a.sh 172.19.57.21 & b.sh 172.19.57.21 &

但我只看到第一个脚本运行。

2 个答案:

答案 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 &