scp 的转义引号

scp 的转义引号

我需要编写一个能够正确处理令人讨厌的(空格、大括号等)文件名的文件名。

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

结果出现错误。

相关内容