我真的不明白为什么会发生这种情况,bash似乎在运行while
循环时删除命令。 我有以下脚本:Bash正在删除命令?
adb shell ls /foo/bar | while read file
do
folder="/foo/bar/$file"
adb pull $folder download
done
当我seperatly运行命令,它的伟大工程。但是,我运行它像这样,我得到以下输出:
' does not existfoo/bar/filesdfsdf.sdf
为/ foo/bar中的每个文件。
所以我试图给我的命令后面的字符串,我改echo "adb pull $folder download"
,得到了以下的输出:
download/foo/bar/fileasdfs.sdf
的每一行。看来,bash用字符串做了些什么,并在这里取代了一些东西... 如果我使用'
,所以不会发生bash替换,我会得到正确的输出。
这里发生了什么?
编辑:我想,不是while
是直接打破,它的adb shell
命令是在每一行结束时回声CRLF。如果我使用
adb shell ls /foo/bar | tr -d '\015' | while read file
do
folder="/foo/bar/$file"
adb pull $folder download
done
它的工作原理! 但是为什么bash对CRLF过敏?为什么它的删除命令?
尝试引用您的文件夹var,即'echo adb pull“$ folder”download'。使用'echo'好主意,直到你得到你想要的结果!祝你好运。 – shellter 2012-03-12 17:31:19
确定woot哈哈,我想出了adb使用CRLF来回应一个新的行......当我这样做的时候发疯,并且划出命令oO。我添加了一个'| tr -d'\ 015''从adb shell输出中删除所有的CR。为什么一会儿不允许CR? – reox 2012-03-13 08:36:38