2013-10-15 127 views
0

我試圖在路徑名中轉義空格/Volumes/NO NAME。我需要通過bash腳本訪問此目錄中的文件。我用sedprintf命令,似乎都沒有工作。我到目前爲止的代碼:轉義路徑名中的空格

while read line 
do 
    if [[ -d ${line} ]]; then 
    echo "${line} is a directory. Skipping this."; 
    elif [[ -f ${line} ]]; then 
    spacedOutLine=`echo ${line} | sed -e 's/ /\\ /g'`; 
    #spacedOutLine=$(printf %q "$line"); 
    echo "line = ${line} and spacedOutLine = ${spacedOutLine}"; 
    else 
    echo "Some other type of file. Unrecognized."; 
    fi 
done < ${2} 

無論這似乎已經奏效。對於等的輸入:/Volumes/NO NAME/hello.txt,輸出爲:

/Volumes/NO: No such file or directory 
NAME/hello.txt: No such file or directory 

我在Mac上,並通過終端使用bash。我也經歷了很多關於這方面的其他文章,這些文章沒有幫助我。

+1

不要試圖手動轉義變量值中的空格。只要引用變量,只要它被展開,並且空間將被保留。 – chepner

回答

1

使用雙引號,同時調用${line}變量。

"${line}"