Supondo que a senha possa conter qualquer caractere, nenhum delimitador usado para a expressão sed
é seguro de usar. Se você tivesse, por exemplo, s/.../.../
e a senha continha /
, você teria o mesmo problema novamente.
Portanto, não use sed
aqui. Em vez disso,
awk -v pw="$MacAddressPasswordeRegisteryValue" \
'BEGIN { OFS=FS="=" }
$1 == "mac.address.sftp.user.password" { print $1, pw; next } 1' \
"$APP_CONFIG_FILE" >"$APP_CONFIG_FILE"-new
Isso transformaria
mac.address.sftp.user.password=something old
em
mac.address.sftp.user.password=hello world !#$/
dado que $MacAddressPasswordeRegisteryValue
foi a string hello world !#$/
. Outras linhas seriam passadas sem modificação para o novo arquivo "$APP_CONFIG_FILE"-new
.