Bash代码仅在当前运行完成后才在循环中运行可执行文件

时间:2017-06-12 02:39:53

标签: c++ bash shell

当前一个命令完成时,我会执行一个bash指令。更清楚:

for i in $(seq 0 3)
do 
...elaboration
eval $command
done

命令是包含指令(./binary_file标志)的变量。 在循环命令中更改。当eval $命令(二进制文件的执行)终止执行时,我会进入循环的下一次迭代。即我会使eval $命令“阻塞”。我怎样才能实现这种行为?或者这是默认行为吗?

eval $命令执行的二进制文件来自C ++源代码(这可能是不相关的,我不知道)。 (我在Unix上) 提前谢谢!

2 个答案:

答案 0 :(得分:0)

这个怎么样(最初的美元符号是bash提示符):

$ command="who am I"
$ for i in {1..10} ; do ${command} ; done
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 
mauro    ttys000  Jun 10 14:08 

答案 1 :(得分:0)

默认情况下,它会阻止(使用&允许后台执行,没有它的bat默认为阻止)。然而,eval是必要的,否则代码将无法工作。另一种不使用具有安全性问题的eval的可能性是:

"${name_exe}" >"${file1_name}.txt" 2>"${file2_name}.txt"

(问题上面的命令是

"${name_exe} > ${file1_name}.txt 2> ${file2_name}.txt"