0

我有一个运行测试的程序,它需要许多参数。假设我有一个main.sh调用 的程序test.sh,即测试程序。在 中main.sh,我输入了许多不同的参数test.sh来运行。只运行一个测试没有问题。

但是,shell 允许我使用&同时运行多个实例。我正在考虑使用 for 循环多次调用此测试,&并在循环开始时设置不同的参数(后台运行)。它如下所示:

#main.sh
for i in 0 1 2 3; do
    value=${param[$i]}
    #test.sh takes "value" as a parameter inside it and run
    . ./test.sh &
done

但是,test.sh通常需要一段时间才能完成,并且会多次使用参数值。在这种情况下,当循环继续运行并增加i改变参数值的“”时,初始实例test.sh将采用不同的参数,循环继续进行。有没有办法让test.sh任何程序实例使用不变的参数值运行?

4

1 回答 1

1

您的子脚本test.sh将拥有父环境的副本,因此更改父环境中的父数据不会影响它(只要您将其作为进程运行,而不是通过点运算符)。你可以通过两种方式做到这一点:

  • 在命令行中传递参数test.sh
  • 在开始之前导出环境变量test.sh

无论哪种情况,这都不会影响test.sh您之前开始的实例。

更具体地说,尝试:

for i in 1 2 3 4; do
    value=${param[$i]}
    ./test.sh $value &    # value is passed as command-line parameter
done
于 2013-10-25T20:35:55.857 回答