bash - 引号转义——来自 bash 的 rsync

标签 bash quotes escaping

我通常很快就能解决这些问题,但这个问题让人头疼。

我有一个 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/

相关文章:

bash - ERROR : (gcloud. services.enable) User does not have permission to access project (or it may not exist): 调用者没有权限

bash - 无法解释bash脚本中的语法错误

mysql - MySQL 中何时使用单引号、双引号和反引号

regex - 如何将常规引号(即 ', ")转换为 LaTeX/TeX 引号(即 `' 、 `` '')

javascript - ColdFusion/Javascript 转义单引号

java - 如何将\n 与打印的字符串文字结合使用?

java - HL7 HAPI - Unicode 字符\E 出现吗?

bash - 如何在 bash stdout 中将多行转换为一行?

正则表达式提取括号之间的值