adb shell中变量的问题

时间:2014-06-19 05:29:12

标签: bash shell adb

在bash中,当我输入:

$ echo 1 | while read L; do echo $L; done

显然我的结果是1。

在adb shell中,我得到了相同的结果。

但是,如果输入如下:

$ adb shell "echo 1 | while read L; do echo $L; done"

我一无所获!

有没有人知道为什么我上面什么都没有?

1 个答案:

答案 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,一切都按预期工作(但非常巧合)。