我需要以下方面的帮助:
我使用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
答案 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
标志:
-F
- 按字面意思处理字符串,而不是正则表达式-q
- 不要将任何内容打印到标准输出-m 1
- 在第一场比赛后停止 &&
之后的命令仅在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"