簡體   English   中英

如何在Shell腳本中處理空白

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM