Sed命令无法通过SSH工作

时间:2015-09-29 22:20:40

标签: bash ssh sed

请考虑以下命令:

ssh MACHINE sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly

当我从命令行运行此命令时,出现此错误:

sed: -e expression #1, char 3: unterminated `s' command

但是,当我首先通过SSH连接到该特定计算机,然后运行该命令的sed部分时,它可以正常工作:

> ssh MACHINE
> sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly

知道为什么会这样吗?

编辑:我认为它与我如何逃避角色有关,因为我只是尝试了简单的测试替换,没有转义字符,它工作正常。我试过双重逃避,但这也没有用。

1 个答案:

答案 0 :(得分:2)

使用here-doc尝试ssh以避免疯狂转义:

ssh -t -t MACHINE <<'EOF'
sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly
exit
EOF