1

Я хотел бы заменить строку другой в файле на моем сервере. Я пытался сделать это:

ssh $REMOTE_HOST sed 's|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|' "$ENV_FILE"

И куча вариантов с разными типами цитирования, но я просто не могу заставить его работать. Команда sed работает, когда я вручную заменяю переменные значениями и запускаю их на сервере.

Команда выше дает следующую ошибку:

bash: {env_file_redacted}: Permission denied
bash: line 0: export: `=': not a valid identifier
bash: line 0: export: `=': not a valid identifier
sed: -e expression #1, char 1: unterminated `s' command

Как я уже сказал, команда работает, когда я запускаю ее на сервере, поэтому это не проблема с разрешениями.

В чем здесь проблема?

1 ответ1

1

Если все переменные (кроме $ REMOTE_HOST) доступны в среде на вашем удаленном сервере, вы можете попробовать:

ssh $REMOTE_HOST 'echo sed "s|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|" "$ENV_FILE"'

И если все выглядит хорошо, уберите echo .

Обновить

С локальными переменными:

ssh $REMOTE_HOST "echo sed \"s|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|\" \"$ENV_FILE\""

И если все выглядит хорошо, уберите echo .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .