【发布时间】:2016-04-19 12:12:59
【问题描述】:
不确定这是否是重复的问题,但我真的找不到任何解决问题的方法。
问题是我无法运行以下命令。
#!/bin/bash
SCRIPT1="cd /path/to/project;"
SCRIPT2="git pull;"
ssh "production" ${SCRIPT1} "ssh-agent /bin/bash; ssh-add ~/.ssh/my_bitbucket_key;" ${SCRIPT2}
仍然是 bash 和 ssh 的新手,所以我也不确定这是否是正确的做法。
希望你能帮助我。谢谢!
【问题讨论】:
-
该命令是否对其他人有效但对您无效,或者它从未对任何人有效?如果它对您不起作用,您会收到什么错误消息?如果它对任何人都不起作用,我会尝试将 $SCRIPT1 和 $SCRIPT2 都放在 ssh 命令的双引号内。
-
将第一行更改为
#!/bin/bash -vx以查看每个 cmd 中发生的变量替换。我想你会看到问题的。不要混淆所有字符串现在都在以+开头的行上单引号。这就是调试器“规范化”其输入的方式。祝你好运。 -
顺便说一句,将远程命令放在变量中是可疑的做法。也许改为创建一个在远程 shell 中运行其参数的函数,例如
prod "cd /path/to/project; git pull其中prod可能类似于prod () { ssh production ssh-agent bash -c "ssh-add ~/.ssh/my_bitbucket_key; $@"; } -
'$@' 是什么意思?
标签: linux bash ubuntu ssh bitbucket