Gostaria de substituir uma string por outra em um arquivo de um servidor meu. Eu tentei fazer isso:
ssh $REMOTE_HOST sed 's|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|' "$ENV_FILE"
E um monte de variantes com diferentes tipos de citações, mas simplesmente não consigo fazer funcionar. O comando sed funciona quando substituo manualmente as variáveis pelos valores e executo no servidor.
O comando acima dá o seguinte erro:
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
Como eu disse, o comando funciona quando o executei no servidor, portanto não é um problema de permissão.
Qual é o problema aqui?
Responder1
Se todas as variáveis (exceto $REMOTE_HOST) estiverem disponíveis no ambiente do seu servidor remoto, você pode tentar:
ssh $REMOTE_HOST 'echo sed "s|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|" "$ENV_FILE"'
E se tudo parecer bem, remova echo
.
Atualizar
Com variáveis locais:
ssh $REMOTE_HOST "echo sed \"s|export ${KEY}=${VAL}|export ${KEY}=${NEW_VAL}|\" \"$ENV_FILE\""
E se tudo parecer bem, remova echo
.