Спасибо SiegeX. Я думаю, что последующие обновления, которые вы упомянули, не отражаются в этом URL.
Мне пришлось отредактировать регулярное выражение, чтобы удалить кавычки, чтобы оно заработало. С кавычками возвращаемый массив пуст.
i=0
while read line; do
if [[ "$line" =~ ^[^#]*= ]]; then
name[i]=${line%% =*}
value[i]=${line##*= }
((i++))
fi
done < vars
Еще лучшая версия.
i=0
while read line; do
if [[ "$line" =~ ^[^#]*= ]]; then
name[i]=`echo $line | cut -d'=' -f 1`
value[i]=`echo $line | cut -d'=' -f 2`
((i++))
fi
done < vars
Первая версия имеет проблемы, если в конфигурационном файле нет места до и после "=". Также, если значение отсутствует, я вижу, что имя и значение заполняются одинаково. Вторая версия не имеет ни одного из них. Кроме того, он удаляет нежелательные начальные и конечные пробелы.
Эта версия читает значения, которые могут иметь = внутри. Более ранняя версия разбивается при первом появлении =.
i=0
while read line; do
if [[ "$line" =~ ^[^#]*= ]]; then
name[i]=`echo $line | cut -d'=' -f 1`
value[i]=`echo $line | cut -d'=' -f 2-`
((i++))
fi
done < vars