1

たとえば、入力として ~ または ~/Documents と入力すると、次のメッセージが表示されます: No such file or directory

ただし、/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 は ~ を見て、シェル展開を再度実行するため、動作します。

より簡単なコマンドで効果をテストできます。

tilde='~'
echo $tilde            # prints a literal ~
eval echo $tilde       # prints your home directory

ちなみに、空白を含むディレクトリ名は問題を引き起こします。

于 2014-12-28T09:07:44.020 に答える