У меня есть команда sed
, которая отлично работает, если я запускаю ее локально в Ubuntu или на нашем встроенном клиенте Arago:
sed -i 's/export PART="$1"/export PART="A"/' flash.sh
Это приводит именно к тому, что мне нужно в обеих версиях sed
,строка, которая изменяется:
export PART="$1"
на
export PART="A"
Моя проблема в том, что мне нужно выполнить ту же команду по сети для встроенного клиента, поэтому я попробовал это на сервере Ubuntuиспользуя bash, клиенту Arago, используя sh:
ssh -n -o stricthostkeychecking=no root@10.14.150.113 sed -i 's/PART="$1"/PART="A"/' flash.sh
, что приводит к строке, содержащей:
export PART=A"$1"
Команда подстановки должна оставаться внутри одинарных кавычек, поэтому двойные кавычкипередаются как литералы, или, может быть, есть лучший способ сохранить двойные кавычки в двух строках?Мне кажется, что $1
просто игнорируется, как будто он пустой, а "A"
передается как A
и заменяет конец PART=
.Я попытался заключить команду в одинарные и двойные кавычки, которые оба приводят к одному и тому же.Я также пытался избежать кавычек с обратной косой чертой, тот же результат.Я думаю, что это что-то с расширением цитаты с sh, что я просто не понимаю.Или, возможно, что-то, чего я не понимаю с помощью ssh.
Я прочитал ряд похожих потоков, но ни один из них не имел дело с использованием ssh для удаленного запуска команды.Я больше не новичок в sed, но этот вопрос стал для меня загадкой.