我需要编写一个能够正确处理令人讨厌的(空格、大括号等)文件名的文件名。
scp -rv "$1" shiny:/Volumes/Seagate3To/\"$1\"
这个函数有效,但我不明白为什么引号需要在 的第二个参数中转义scp
。
答案1
假设 1 美元是
This is a test directory name
我们转义双引号是因为我们希望将目标目录(冒号后面的部分)作为一个整体(包括双引号)传递到目标计算机。
以下是我们想要过去的目标
/Volumes/Seagate3To/"This is a test directory name"
如果没有转义,双引号将被本地机器消耗,并发送以下字符串,变成以空格分隔的 6 个字符串
/Volumes/Seagate3To/This is a test directory name
结果出现错误。