我真的不明白爲什麼會發生這種情況,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