【问题标题】:bash script using sed command on remote server with ssh and special characters在远程服务器上使用 sed 命令的 bash 脚本,带有 ssh 和特殊字符
【发布时间】:2020-05-25 11:49:36
【问题描述】:

我正在尝试通过 bash 脚本在远程服务器上运行此 sed 命令,但无法正确转义。

ssh -t user@ip "sed -i -e '/<!--insert_new_code-->/i\          <div class="col-lg-4 col-md-6">\n            <?php include "''explorers/'"${coin_symbol_lower}"'.php''";?>\n          </div>\n\n' /home/some-data/some_dir/dir/dir/index.php"

我在里面留了一些空格来保持 html 代码看起来干净。 sed 命令在本地运行时工作正常,只是不能通过 ssh。

任何帮助让它工作将不胜感激

【问题讨论】:

  • 如果您在运行时收到任何错误消息,请务必提及?

标签: bash sed


【解决方案1】:

传递给ssh 的命令用双引号分隔。由于传递给sed 的字符串中还有双引号,因此需要对它们进行转义以防止shell 尝试获取它们:

    ssh -t user@ip "sed -i -e '/<!--insert_new_code-->/i\          <div class=\"col-lg-4 col-md-6\">\n            <?php include \"''explorers/'\"${coin_symbol_lower}\"'.php''\";?>\n          </div>\n\n' /home/some-data/some_dir/dir/dir/index.php"

【讨论】:

  • 谢谢!我也只好逃了!但在那之后这工作
【解决方案2】:

试试这个语法

ssh -t user@ip << \EOF
sed -i -e '/<!--insert_new_code-->/i\          <div class="col-lg-4 col-md-6">\n            <?php include "''explorers/'"${coin_symbol_lower}"'.php''";?>\n          </div>\n\n' /home/some-data/some_dir/dir/dir/index.php
EOF

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2018-02-03
    • 2023-03-26
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多