我知道要处理文件名中的空格,您应该将整个文件名放在引号之间,但这不适用于此脚本,实际上发生的情况恰恰相反,它只能在不使用引号的情况下工作,我不明白为什么。测试用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
,引号实际上是文本的一部分。