例如,如果我输入 ~ 或 ~/Documents 作为输入,我会收到消息:没有这样的文件或目录
但是,如果我使用 /home/username/Documents 它工作正常。
echo "Dose onoma katalogou"
read Directory
find $Directory -type f -perm 777
关于为什么会发生这种情况以及如何修复它以便能够键入包括“~”的路径名的任何想法?
bash 在扩展任何 ~之后扩展变量 $Directory ,因此一旦扩展 $Directory,扩展 ~ 的时间已经过去。
eval find $Directory -type f -perm 777
将起作用,因为 eval 将看到 ~ 并再次运行 shell 扩展。
您可以通过更简单的命令来测试效果:
tilde='~'
echo $tilde # prints a literal ~
eval echo $tilde # prints your home directory
顺便说一句,包含空格的目录名称会导致问题。