如何使用“source”命令同时运行命令?

如何使用“source”命令同时运行命令?

例如,我有一个名为ex01(C++ 程序)的可执行文件。

我有一个文本文件,其中包含该程序的一组具有不同参数的调用。

文本文件如下所示:

./ex01 command1 > ex.dat  &
./ex01 command2 >> ex.dat &
./ex01 command3 >> ex.dat &
...

我可以使用该source命令自动完成此任务。

但我希望同时做到这一点。我怎样才能做到这一点?

答案1

您应该在单独的 shell 中运行它,而不是获取该文件。该source命令将在当前 shell 中运行脚本的内容。

$ cat script.sh
./ex01 command1 > ex.dat;
./ex01 command1 > ex.dat;
...
$ sh script.sh
 ...

分号不是必需的。

./ex01 command1 > ex.dat
./ex01 command1 > ex.dat
...

要并行运行命令,请&在每个命令的末尾添加一个与号 ( )。

./ex01 command1 > ex.dat &
./ex01 command1 > ex.dat &
...

请注意,上述内容将会出现问题,因为两个命令正在写入单个文件。您应该写入不同的文件,

./ex01 command1 > ex1.dat &
./ex01 command1 > ex2.dat &
...

或附加到文件中。

./ex01 command1 >> ex1.dat &
./ex01 command1 >> ex2.dat &
...

如果您的脚本一遍又一遍地重复同一行,则可以使用循环。

# Run 10 times
for i in $(seq 1 10) ; do
    ./ex01 command1 >> ex1.dat &
 done

编辑:如果参数的数字线性变化,您可以使用如下循环:

# Run 10 times
for i in $(seq 1 10) ; do
    ./ex01 command$i >> ex.dat &
done

相关内容