引用符があってもどのように機能しないのですか?

引用符があってもどのように機能しないのですか?

ファイル名のスペースを処理するには、完全なファイル名を引用符の間に入れる必要があることを知っていますが、このスクリプトでは機能しません。実際には反対の現象が発生し、引用符なしでのみ動作します。理由を理解できません。テスト目的でgnome-terminal

echo "Drag and drop some file"
read FILE
NAME=$(basename "$FILE")
cp "$FILE" ~/foo/bar/"$NAME" && echo "Success!"

答え1

readたとえば、違いを説明できると思います。一重引用符の間の内容は、コマンドに入力したものと同じです。

名前を入力してください引用なし:

f='file 1'
touch "$f"
ls --literal -l "$f"
-rw-r--r-- 1 glennj glennj 0 Sep 13 01:57 file 1

名前を入力してくださいそして引用符:

f='"file 2"'
touch "$f"
ls --literal -l "$f"
-rw-r--r-- 1 glennj glennj 0 Sep 13 01:57 "file 2"

この場合、二重引用符はリテラル文字であり、実際にはファイル名の一部です。

入力に引用符を使用すると、read引用符は実際にはテキストの一部になります。

関連情報