从Shell脚本中读取STDOUT(EASY)

时间:2015-06-05 22:48:48

标签: shell stdout

我确信这很容易。我正在尝试从STDOUT读取一个字符串。我将作业提交到另一台机器,然后我想发送" bjob​​s"检查作业是否已完成。我希望能够读取STDOUT并检测它何时完成然后继续。

这就是我所拥有的,它不起作用,但我觉得非常接近!

等待stdout阅读"未找到未完成的工作"

bjobs
IFS= read -r line
echo "$line"
while "$line" != "No unfinished job found"
do
echo "$line"
sleep 30s
bjobs
IFS= read -r line
done

任何帮助将不胜感激!这是我的第一个shell脚本之一

1 个答案:

答案 0 :(得分:1)

你缺少的是read将从它的标准中读取...而不是它的标准输出。所以你必须安排它的stdin对应于你想要它读取的命令的标准输出。直截了当的方法是使用管道(|

例如:

    $ bjobs | ( IFS= ; read -r line ; echo "$line" ; while "$line" != "No unfinished job found" ; do ; echo "$line" ; sleep 30s ; read -r line ; done )

( ... )正在创建子shell ...