[英]how to process the blank in shell script
我想將目錄中所有文件的名稱放入變量。 我寫如下:
DATA=`ls`
for LOOP in $DATA
do
echo $LOOP
done
但是有些文件名包括空格。 然后,名為“ A B.txt”的文件將被解釋為兩個文件“ A”和“ B.txt”。
如何解決這個問題呢?
不要解析ls
的輸出,這幾乎總是會給您帶來麻煩。
只需使用:
for loop in * ; do
echo "$loop"
done
雖然建議不要解析ls
輸出是一個普遍的常識,但是可以強制執行以下命令以輸出可解析的數據:
`ls -b`
將使用C樣式轉義符替換非圖形字符(包括空格)。
但這不適用於shell for循環,但是可以在通過管道將輸出發送到另一個命令時使用。
例:
$ ls -b
A\ B.txt C.txt
在for循環中失敗:
$ for i in $(ls -b) ; do echo $i ; done
A\
B.txt
C.txt
通過管道發送時仍然有效
$ ls -b | xargs -n 1 echo
A B.txt
C.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.