Bash 缺少尾随-';在远程shell命令中

Bash 缺少尾随-';在远程shell命令中,bash,shell,rsync,Bash,Shell,Rsync,在我的bash shell脚本中 rsync-a--delete-e“ssh-i/keypath”/source\u dir/username@remotehost:/dest_dir/ 无论上面的[eval,双引号到单引号]组合在下面给出了什么错误 远程shell命令中缺少尾随“-”。 rsync错误:语法或用法错误(代码1),位于../main.c(335)[发送方=2.6.8] 但在命令提示符下直接使用相同的命令。 有人能帮我解决我在这里遗漏的问题吗 谢谢我不确定你的问题是什么,但对我来说

在我的bash shell脚本中

rsync-a--delete-e“ssh-i/keypath”/source\u dir/username@remotehost:/dest_dir/

无论上面的[eval,双引号到单引号]组合在下面给出了什么错误

远程shell命令中缺少尾随“-”。 rsync错误:语法或用法错误(代码1),位于../main.c(335)[发送方=2.6.8]

但在命令提示符下直接使用相同的命令。 有人能帮我解决我在这里遗漏的问题吗


谢谢

我不确定你的问题是什么,但对我来说,大多数奇怪的rsync错误都是由
.bashrc
.bash_profile
(或其他shell rc文件)在登录时输出的内容引起的。目前,我通常在
.bashrc
.bash\u profile
中以第一行的形式编写以下语句:

# return if it's not an interactive shell
[[ $- == *i* ]] || return 0

不确定您的问题是什么,但对我来说,大多数奇怪的rsync错误是由
.bashrc
.bash_profile
(或其他shell rc文件)在登录时输出某些内容引起的。目前,我通常在
.bashrc
.bash\u profile
中以第一行的形式编写以下语句:

# return if it's not an interactive shell
[[ $- == *i* ]] || return 0

您的问题是bash脚本中嵌入了引号

查看以下解决方案(如果您觉得有用,请向上投票):


您的问题在于bash脚本中嵌入了引号

查看以下解决方案(如果您觉得有用,请向上投票):


一个对我有效的简单解决方案是使用单引号而不是双引号,即

rsync -a --delete -e 'ssh -i /keypath' /source_dir/ username@remotehost:/dest_dir/

一个对我有效的简单解决方案是使用单引号而不是双引号,即

rsync -a --delete -e 'ssh -i /keypath' /source_dir/ username@remotehost:/dest_dir/

没有足够的信息来确定。尝试运行
rsync-v-v-v
,它将打印出远程服务器上正在运行的实际shell命令,作为调试输出的第一行。信息不足,无法确定。尝试运行
rsync-v-v-v
,它将打印出正在远程服务器上运行的实际shell命令,作为调试输出的第一行。