【问题标题】:Sed command not working through SSHSed 命令无法通过 SSH 工作
【发布时间】:2015-12-27 13:37:39
【问题描述】:

考虑以下命令:

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

知道为什么会发生这种情况吗?

编辑:我相信这与我如何转义字符有关,因为我只是尝试了没有转义字符的简单测试替换,并且效果很好。我尝试过双重转义,但也没有用。

【问题讨论】:

    标签: bash ssh sed


    【解决方案1】:

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

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

    【讨论】:

    • 原来是空格,但这是个好建议!我会试试的。
    • 它有效,但我收到这条消息:Pseudo-terminal will not be allocated because stdin is not a terminal. 有什么办法可以摆脱它吗?
    • 啊,你最后需要一个exit。查看更新的答案。
    猜你喜欢
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多