Рассмотрим следующую команду:команда Sed не работает через SSH
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
Любой идея, почему это произойдет?
EDIT: Я считаю, что это имеет какое-то отношение к тому, как я избегаю символов, потому что я просто попробовал простую замену тестов без экранированных символов, и все получилось отлично. Я попробовал двойное экранирование, но это тоже не сработало.
Это, оказалось, пространство, но это хорошее предложение! Я попробую. –
Он работает, но я получаю это сообщение: «Псевдо-терминал не будет выделен, потому что stdin не является терминалом». Есть ли способ избавиться от этого? –
А вам нужен один «выход» в конце. См. Обновленный ответ. – anubhava