运行多个二进制文件,它们不会在shell脚本中自行终止

时间:2011-01-20 20:28:31

标签: shell

我在同一个文件夹中有几个二进制文件,我希望按顺序运行。

每个二进制文件不会自行终止,并且正在等待来自套接字接口的数据。另外,我需要根据前一个二进制文件的输出决定是否运行下一个二进制文件。我想在后台运行它们并将前一个二进制文件的输出重定向到一个文件,并将关键字的“grep”重定向。但是,除非我使用wait,否则我无法捕获运行前一个二进制文件所需的所有输出。但是如果我使用wait,我就无法控制回来,因为二进制文件正在侦听套接字并且不会返回。

我可以在这做什么?

示例代码:

/home/test_1 & > test_1_log
test_1_id=$!
wait

===>我还想在test_1_log中点击“成功” ===>因等待而无法到达这里。

/home/test_2 & >test_2_log
test_2_id=$!
wait

由于

1 个答案:

答案 0 :(得分:1)

你可以使用睡眠而不是等待吗?

问题在于你不能等待它返回,因为它不会。与此同时,你必须等待一些输出。如果您知道“成功”或某些内容将被输出,那么您可以循环直到该行显示为睡眠状态。

RC=1
while [ $RC != 0 ]
do
    sleep 1
    grep -q 'Success' test_1_log
    RC=$?
done

还允许你停止等待10次迭代之后等待,确保你的脚本退出