4

我需要以下帮助:

我使用 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
4

3 回答 3

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
于 2013-03-04T16:49:15.793 回答
1
adb shell logcat | grep -Fqm 1 "TestProcess test service stopped" && echo "Test Service finished"

旗帜grep

  1. -F- 按字面意思处理字符串,而不是正则表达式
  2. -q- 不要将任何内容打印到标准输出
  3. -m 1- 在第一场比赛后停止

只有在找到匹配&&项时才会执行该命令。grep只要您“知道”grep最终会匹配并希望在它返回后无条件地继续,只需不要&& ...

于 2013-03-04T16:56:19.033 回答
0

您可以使用 until 循环。

adb shell logcat | grep TestProccess | until read line && [[ "$line" =~ "TestProccess test service stopped" ]]; do
 echo $line;
done && echo -n "$line\nTestService finished" 
于 2013-03-05T20:34:25.467 回答