Я записал некоторый сценарий, который захватывает строки от массива и воспроизводит его в файле. Проблема здесь, что привычка специальных символов проходит. Какие-либо идеи?
#!/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
Кавычки уже удалены оболочкой в присвоении в "фазе" удаления кавычки (см. man bash
для деталей). Обратная косая черта двойная кавычка или одинарная кавычка целые элементы. Кроме того, последняя строка в NewParameters является на самом деле тремя элементами, разделенными пробелами; снова, если Вы хотите иметь все в одном элементе, обратная косая черта пробелы или включить целую строку в одинарные кавычки.