Shell
讀取帶空格的路徑名,然後將變數用於查找命令
我需要讓使用者提供一個路徑名(這裡有一個空格)來啟動一個查找命令:
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
所以你不需要以任何一種方式轉義)