Os caracteres Sed (") não passarão pelo loop

1

Eu escrevi algum tipo de script que pega seqüências de caracteres de array e replays no arquivo. O problema aqui que os caracteres especiais não passarão. Alguma idéia?

#!/bin/bash/
NewParameters=(
scservice.memberServiceEndpoint="http://mywebhere.com"
scservice.memberServiceConpoint="http://example.com"
play.modules.disabled += "play.data.format.FormattersModule"
)

file=/home/conf.conf

for i in "${NewParameters[@]}"                                                           
do
     before=$(printf "%s\n" $i | awk -F'=' '{print }')                              
        after=$(printf "%s\n" $i | awk -F'=' '{print }')                               
            sed -i "s@$before=.*@$before=$after@g" $file
done

Resultado da saída:

scservice.memberServiceEndpoint=http://mywebhere.com
scservice.memberServiceConpoint=http://example.com
play.modules.disabled += play.data.format.FormattersModule
    
por Prologas 03.03.2017 / 09:22

1 resposta

3

As aspas são removidas pelo shell na atribuição que já está na fase "remoção de cotações" (veja man bash para detalhes). Backslash as aspas duplas, ou aspas simples, os elementos inteiros. Além disso, a última linha em NewParameters é, na verdade, três elementos separados por espaços; novamente, se você quiser ter tudo em um elemento, inverta os espaços ou coloque a linha inteira entre aspas simples.

    
por choroba 03.03.2017 / 09:29