读取带空格的路径名,然后将变量使用到 find 命令中

读取带空格的路径名,然后将变量使用到 find 命令中

我需要要求用户提供一个路径名(这里有一个空格)来启动查找命令:

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

效果完美。

非常感谢

答案1

With-r read将防止\成为转义字符,因此请不要键入 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因此您不需要以任何方式转义它)

相关内容