3

当我运行以下脚本时,它会在休息后挂起,因此永远不会执行“做其他事情”。我怀疑这是因为中断后,adb shell logcat 仍在执行。手动按 ctrl-c 会终止 logcat 并允许执行其他操作,但是有没有办法自动执行此操作?

adb logcat -c
adb shell logcat -s "test" | while IFS=" " read -a Array
do
    echo "${Array[2]} ${Array[3]}" 
    if [ "${Array[2]}" == "${Array[3]}" ]
    then echo "Equals"
        break
    fi
done
#do something else

谢谢

4

3 回答 3

0

我最终使用的解决方案是以下的变体:

使用 bash 和正则表达式在一行中查找并终止进程

于 2013-05-22T18:26:54.017 回答
0

这有点旧,但是当我遇到麻烦时偶然发现了这篇文章。

我发现正在发生的是,当您使用 logcat 传递 while 循环时,您正在对进程进行分组。相反,您需要将 logcat 进程输入到您的 while 循环中,如下所示:

    adb logcat -c
    while IFS=" " read -a Array
    do
        echo "${Array[2]} ${Array[3]}" 
        if [ "${Array[2]}" == "${Array[3]}" ]
        then echo "Equals"
             break
        fi
    done < <(adb shell logcat -s "test") 

我可能不理解,但这些页面也提供了更多背景信息:http: //mywiki.wooledge.org/ProcessSubstitution https://askubuntu.com/questions/678915/whats-the-difference-between-并在bash

于 2015-12-02T19:29:53.080 回答
0

logcat 有一个选项“-d”:转储日志然后退出(不要阻塞)。

adb shell logcat -d -s "test"

希望能帮助到你。

于 2015-12-03T03:35:51.803 回答