获取adb shell命令的结果代码

时间:2013-07-05 01:47:59

标签: android shell adb

我应该如何获得$?的{​​{1}}?

我想查看adb shell <command>的结果。

我在adb shell mkdir /xxx处执行了mkdir命令但失败了,但adb shell的结果是$?

0

我希望获得$ adb shell mkdir /xxx mkdir failed for /xxx, Read-only file system $ adb shell echo $? 0 $ adb shell "mkdir /xxx; echo $?" mkdir failed for /xxx, Read-only file system 0 的结果代码,但不能在交互模式下,如下所示:

adb shell <command>

3 个答案:

答案 0 :(得分:3)

你应该这样做:

$ adb shell 'mkdir /xxx; echo $?'
mkdir failed for /xxx, Read-only file system
255

请注意单引号,否则会在到达adb之前评估$?

答案 1 :(得分:0)

如果使用的是较旧的仿真器,则adb shell不会返回退出值。然后,您必须像在https://stackoverflow.com/a/17480194/306864

中那样使用adb shell 'false; echo $?'

在较新的模拟器中,它可以正常工作,然后您可以执行adb shell false || echo failed。这是我的测试方式:

$ adb -e android-22 shell false; echo $?
0
$ adb -e android-22 shell 'false; echo $?'
1
$ adb -e android-29 shell false; echo $?
1
$ adb -e android-29 shell 'false; echo $?'
1

答案 2 :(得分:-3)

您应该检查adb shell本身的返回值,而不是检查设备上的最后一个返回值。 例如,执行adb shell ls,然后执行echo $?(从您的外壳而不是从设备内部执行,即不要执行adb shell echo $?),您会看到返回值为0。如果先执行adb shell dlfkgjdlkf然后执行echo $?,则返回值为1。