【问题标题】:sed not working on remote machinesed 不能在远程机器上工作
【发布时间】:2013-08-21 02:43:12
【问题描述】:

我正在尝试像这样在远程服务器上运行脚本:

ssh root@cnc-02 'bash -c "
      echo $SHELL;
      cd /home/bldadmin/patch;
      pwd;
      echo '$int_ver_cnc';
      echo '$rev_ver_cnc';
      echo '$pre_ver_cnc';
      cp -Rf RP_'$pre_ver_cnc'-'$int_ver_cnc' RP_'$int_ver_cnc'-'$rev_ver_cnc';
      cd /home/bldadmin/patch/RP_'$int_ver_cnc'-'$rev_ver_cnc'/CSCONsap/data/twoway/manual;
      rm rulePkg.zip;
      mv cncrules-CNC60Test-1.48.0-1.49.0.zip rulePkg.zip;
      cd /home/bldadmin/patch/RP_'$int_ver_cnc'-'$rev_ver_cnc';
      find . -name install.sh.orig;
      sed -e 's/^\(patchid=\)\(.*\)/\1\"1.47.0-1.48.0\"/g' -e 's/^\(fromVersion=\)\(.*\)/\1\"1.47.0\"/g' -e 's/^\(toVersion=\)\(.*\)/\1\"1.48.0\"/g' install.sh.orig >newfile.sh.orig;
"'

这是我在本地机器上的脚本。它将通过 SSH 连接到远程机器并执行命令列表。所有命令都在执行,但sed 不起作用。我收到以下错误

"bash: -c: line 14: syntax error near unexpected token `(' bash: -c:
line 14: `      sed -e s/^(patchid=)(.*)/11.47.0-1.48.0/g -e
s/^(fromVersion=)(.*)/11.47.0/g -e s/^(toVersion=)(.*)/11.48.0/g
install.sh.orig >newfile.sh.orig;' "

sed 命令在本地执行时工作正常,我不知道我错过了什么?

【问题讨论】:

标签: linux bash shell ssh sed


【解决方案1】:

将您的脚本保存到一个文件script.sh,而不是让引用头痛 (使用合理的描述性名称) 并运行:

$ ssh root@cnc-02 'bash -s' < script.sh

【讨论】:

    猜你喜欢
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2015-06-19
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多