Один из вариантов — исправить синтаксис в файле и заставить оболочку анализировать файл напрямую . Недостатком является то, что оболочка должна иметь возможность анализировать допустимый синтаксис, и вы, по сути, запускаете файл конфигурации как код в содержимом запущенного скрипта.
К счастью, вы пометили bash
, что хорошо, поскольку эта оболочка поддерживает ассоциативные массивы. Это позволяет вам считывать значения без попытки оболочки проанализировать или оценить их, что, в свою очередь, означает, что вам не нужно слишком доверять содержимому файла конфигурации.
Предполагая, что параметры конфигурации составляют один -на строку -, вы можете прочитать их с помощью кода, подобного этому
#!/bin/bash
#
declare -A config
while IFS=$'[ \t]*=[ \t]*' read -r name value
do
echo "Read name=$name, value=$value" >&2
config[$name]="$value"
done
И вы можете ссылаться на них, используя "${config[$name]}"
ссылки, подобные этой
echo "variable1=${config[variable1]}, variable2=${config[variable2]}." >&2
Конструкция IFS=$'[ \t]*=[ \t]*'
указывает глаголу read
игнорировать пробелы вокруг символа =
, так что fruit=pear
и fruit = pear
эквивалентны.