1

例如,如果我输入 ~ 或 ~/Documents 作为输入,我会收到消息:没有这样的文件或目录

但是,如果我使用 /home/username/Documents 它工作正常。

echo "Dose onoma katalogou"

read Directory

find $Directory -type f -perm 777

关于为什么会发生这种情况以及如何修复它以便能够键入包括“~”的路径名的任何想法?

4

1 回答 1

1

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

顺便说一句,包含空格的目录名称会导致问题。

于 2014-12-28T09:07:44.020 回答