我通常很快就能解决这些问题,但这个问题让人头疼。
我有一个 shell 脚本,它加载一些关于连接到哪里以及如何从文本文件连接的信息,这是使用读取命令完成的。这行得通。它将要发送到 RSync 的参数存储在变量调用 $rsyncargs 中。
我想使用 RSync arg -e 用于将详细信息传递到 ssh,在我的例子中是端口号:
rsync -avz -e "ssh -p 222" dir/ bob@server.com:dir/
文本文件中的行如下所示:
-e "ssh -p 222"
bash 的行应该是这样的:
rsync -avz $rsyncargs $src $dst
这一切都有效,除了引号搞砸了,我最终得到了
sending incremental file list
rsync: link_stat "/dir/to/shell/script/222"" failed: No such file or directory (2)
所以它试图在错误的阶段解析引号的内容。我已经尝试了一系列不同的转义机制(比如文本文件中的反斜杠和在几个地方使用单引号而不是双引号等)但它似乎都以类似的灾难性(尽管并不总是相同的)错误消息结束。
任何建议将不胜感激(要么解决原始问题,要么以不那么烦人的方式更改 ssh 端口)
最佳答案
您始终可以在 ssh 配置中设置端口:
>cat ~/.ssh/config
Host shortName
Hostname [actual url or ip]
User otherUserName
Port 22
ForwardAgent yes
ForwardX11 yes
关于bash - 引号转义——来自 bash 的 rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3600957/