我应该如何获得$?
的{{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>
答案 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。