Скрипт bash с использованием команды sed на удаленном сервере с s sh и специальными символами - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь запустить эту команду sed на удаленном сервере с помощью сценария bash, но не могу получить правильное экранирование.

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 отлично работает при локальном запуске, но не более s sh.

Буду признателен за любую помощь в получении работы

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

Команда, переданная ssh, отделяется двойными кавычками. Поскольку в строке, передаваемой на 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"
0 голосов
/ 10 февраля 2020

Попробуйте этот синтаксис

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
...