在bash中,当我输入:
$ echo 1 | while read L; do echo $L; done
显然我的结果是1。
在adb shell中,我得到了相同的结果。
但是,如果输入如下:
$ adb shell "echo 1 | while read L; do echo $L; done"
我一无所获!
有没有人知道为什么我上面什么都没有?
答案 0 :(得分:4)
您应该从adb
shell获得换行符。麻烦的是,调用adb shell "… echo $L; …
行的shell看到了$L
并将其扩展为空字符串,因此adb shell
看到了命令行:
echo 1 | while read L; do echo; done
使用单引号:
adb shell 'echo 1 | while read L; do echo $L; done'
或者,要有创造力:
L='$L'
adb shell "echo 1 | while read L; do echo $L; done"
现在,调用shell将$L
替换为$L
,一切都按预期工作(但非常巧合)。