我是shell脚本的新手,我想要做的是,我需要运行我的可执行文件的4个实例,然后等待它们结束运行我的最终脚本现在我拥有的是这样的:
#!/bin/bash
g++ -std=c++110x BC-Boost.cpp -o bc-boost
for i in 1 2 3 4
do
python initialization.py -c $i
./bc-boost $i
done
python ploting.py
问题是;现在我的脚本按顺序运行initialization.py, ./bc-boost
我希望将它们运行到后台,并在完成上述所有代码时以某种方式告诉ploting.py
运行! (而且我不想去线程......)
答案 0 :(得分:4)
我会选择这样的事情:
#!/bin/bash
g++ -std=c++110x BC-Boost.cpp -o bc-boost
for i in 1 2 3 4 ; do
( python initialization.py -c $i ; ./bc-boost $i ) &
done
for i in 1 2 3 4 ; do
wait
done
python ploting.py
这可以通过以下测试程序看出:
#!/bin/bash
for i in 1 2 3 4 ; do
(
echo "$i start $(date)"
sleep $i
sleep $i
echo "$i end $(date)"
) &
done
for i in 1 2 3 4 ; do
wait
done
echo all done
输出:
1 start Thu, Mar 26, 2015 11:21:00 AM
2 start Thu, Mar 26, 2015 11:21:00 AM
3 start Thu, Mar 26, 2015 11:21:00 AM
4 start Thu, Mar 26, 2015 11:21:00 AM
1 end Thu, Mar 26, 2015 11:21:02 AM
2 end Thu, Mar 26, 2015 11:21:04 AM
3 end Thu, Mar 26, 2015 11:21:06 AM
4 end Thu, Mar 26, 2015 11:21:08 AM
all done