我有这样的命令:
ssh user@hostname 'sed -e "s|foo|${bar}|" /home/data/base_out.sql > /home/data/out.sql'
sed命令在本地shell中运行。但它没有通过ssh命令扩展变量。谢谢!
答案 0 :(得分:1)
规则是在单引号内,不扩展参数。整个命令周围都有单引号。
试试这个:
ssh user@hostname "sed -e 's|foo|$bar|' /home/data/base_out.sql > /home/data/out.sql"
现在$bar
在命令字符串作为参数传递给ssh
之前展开,这就是你想要的。
我删除了${bar}
周围的花括号,因为我认为它们提供了一种虚假的安全感。在这种情况下,他们不会保护您免受与using shell variables in sed commands相关的任何问题的影响。