Vin*_*ait 3 shell scripting path variable
我需要让用户提供一个路径名(这里会有一个空格)来启动一个查找命令:
read -r -e -p "Folder:" folder
Folder :/mnt/My\ folderX/
echo $folder
Run Code Online (Sandbox Code Playgroud)
给出:
My\ folderX/
Run Code Online (Sandbox Code Playgroud)
但..
find $folder | sort -rn
Run Code Online (Sandbox Code Playgroud)
给出:
find: /mnt/My\: No such file or directory
find: folderX/: No such file or directory
Run Code Online (Sandbox Code Playgroud)
和
find "$folder" | sort -rn
Run Code Online (Sandbox Code Playgroud)
给出:
find: /mnt/My\ folderX/: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我做错了什么吗?无法弄清楚为什么第二个命令不会运行,因为它应该将其视为:
find /mnt/My\ folderX/ | sort -rn
Run Code Online (Sandbox Code Playgroud)
哪个工作得很好。
非常感谢
With-r read将阻止 the\成为转义字符,因此不要输入 the\或不要使用-r.
所以尝试如下:
read -rep "Folder: " folder
find "$folder" | sort -rn
Run Code Online (Sandbox Code Playgroud)
并且/mnt/My folderX没有任何逃脱地进入
或者
read -ep "Folder: " folder
find "$folder" | sort -rn
Run Code Online (Sandbox Code Playgroud)
并输入/mnt/My\ folderX(或/mnt/My folderX不使用转义符 - 您将整行读入,folder因此您无需以任何方式对其进行转义)