用空格读取路径名,然后将变量用于 find 命令

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)

哪个工作得很好。

非常感谢

Eri*_*ouf 6

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因此您无需以任何方式对其进行转义)