Символы Sed (") не пройдут через цикл

Я записал некоторый сценарий, который захватывает строки от массива и воспроизводит его в файле. Проблема здесь, что привычка специальных символов проходит. Какие-либо идеи?

#!/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 $1}')                              
        after=$(printf "%s\n" $i | awk -F'=' '{print $2}')                               
            sed -i "s@$before=.*@$before=$after@g" $file
done

Выходной результат:

scservice.memberServiceEndpoint=http://mywebhere.com
scservice.memberServiceConpoint=http://example.com
play.modules.disabled += play.data.format.FormattersModule
1
задан 3 March 2017 в 11:28

1 ответ

Кавычки уже удалены оболочкой в присвоении в "фазе" удаления кавычки (см. man bash для деталей). Обратная косая черта двойная кавычка или одинарная кавычка целые элементы. Кроме того, последняя строка в NewParameters является на самом деле тремя элементами, разделенными пробелами; снова, если Вы хотите иметь все в одном элементе, обратная косая черта пробелы или включить целую строку в одинарные кавычки.

3
ответ дан 7 December 2019 в 12:35

Другие вопросы по тегам:

Похожие вопросы: