Shell

讀取帶空格的路徑名,然後將變數用於查找命令

  • March 4, 2017

我需要讓使用者提供一個路徑名(這裡有一個空格)來啟動一個查找命令:

read -r -e -p "Folder:" folder
Folder :/mnt/My\ folderX/
echo $folder

給出:

My\ folderX/

但..

find $folder | sort -rn

給出:

find: /mnt/My\: No such file or directory
find: folderX/: No such file or directory

find "$folder" | sort -rn

給出:

find: /mnt/My\ folderX/: No such file or directory

是不是我做錯了什麼?無法弄清楚為什麼第二個命令不會執行,因為它應該將其視為:

find /mnt/My\ folderX/ | sort -rn

效果很好。

非常感謝

With-r read將防止 the\成為轉義字元,因此不要鍵入 the\或不要使用-r.

所以嘗試如下:

read -rep "Folder: " folder
find "$folder" | sort -rn

/mnt/My folderX並且沒有任何逃脫地進入

或者

read -ep "Folder: " folder
find "$folder" | sort -rn

並輸入/mnt/My\ folderX(或者/mnt/My folderX沒有轉義——你會讀入整行,folder所以你不需要以任何一種方式轉義)

引用自:https://unix.stackexchange.com/questions/349129