![如何使用“source”命令同时运行命令?](https://linux22.com/image/45190/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E2%80%9Csource%E2%80%9D%E5%91%BD%E4%BB%A4%E5%90%8C%E6%97%B6%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
例如,我有一个名为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