bash:循环处理输出并终止进程

时间:2013-03-04 16:44:52

标签: linux bash command ubuntu-12.04 output

我需要以下方面的帮助:

我使用linux来编写发送到设备的命令。我需要向设备提交grep logcat命令,然后在生成时迭代其输出并查找特定字符串。找到此字符串后,我希望我的脚本移动到以下命令。

在伪代码中

for line in "adb shell logcat | grep TestProccess"
do 
    if "TestProccess test service stopped" in line:
       print line
       print "TestService finished \n"
       break
    else:
       print line
done

3 个答案:

答案 0 :(得分:5)

adb shell logcat | grep TestProcess | while read line
do
  echo "$line"
  if [ "$line" = "TestProces test service stopped" ]
  then echo "TestService finished"
       break
  fi
done

答案 1 :(得分:1)

adb shell logcat | grep -Fqm 1 "TestProcess test service stopped" && echo "Test Service finished"

grep标志:

  1. -F - 按字面意思处理字符串,而不是正则表达式
  2. -q - 不要将任何内容打印到标准输出
  3. -m 1 - 在第一场比赛后停止
  4. &&之后的命令仅在grep找到匹配项时执行。只要您“知道”grep最终会匹配,并且一旦它返回就想无条件地继续,只需不要&& ...

答案 2 :(得分:0)

你可以使用until循环。

adb shell logcat | grep TestProccess | until read line && [[ "$line" =~ "TestProccess test service stopped" ]]; do
 echo $line;
done && echo -n "$line\nTestService finished"