Каков наилучший способ прочитать файл конфигурации в bash? Например, у вас есть сценарий и вы не хотите заполнять все настройки вручную каждый раз, когда вы вызываете скрипт.
Редактирование 1: Я думаю, что я не дал понять, что: я хочу ... У меня есть файл configfile, похожий на
variable_name value
variable_name value ...
, и я хочу прочитайте это. Я знаю, что я мог бы просто grep его для аргументов, которые я ищу, или так ... но, возможно, есть более интеллектуальный способ:)
Очевидно, что я не специалист bash здесь, но концепция не должна отличаться на любом используемом вами языке:
В приведенном ниже примере вы может использовать (очень) базовый скрипт либо установить строку, либо напечатать строку, как указано в вашем файле конфигурации:
#!/bin/bash
# argument to set a new string or print the set string
arg=$1
# possible string as second argument
string=$2
# path to your config file
configfile="$HOME/stringfile"
# if the argument is: "set", write the string (second argument) to a file
if [ "$arg" == "set" ]
then
echo "$string" > $configfile
# if the argunment is "print": print out the set string, as defined in your file
elif [ "$arg" == "print" ]
then
echo "$( cat $configfile )"
fi
$ '/home/jacob/Bureaublad/test.sh' set "Een aap op een fiets, hoe vind je zoiets?"
Затем, чтобы распечатать строку, как определено в вашем «configfile»: $ '/home/jacob/Bureaublad/test.sh' print
Een aap op een fiets, hoe vind je zoiets?
Конечно, в реальном прикладном скрипте вам нужно добавить много материала для убедитесь, что аргументы верны, решите, что делать, если ввод неверный, файл настроек не существует и т. д., но:
установить
Используйте source или . для загрузки в файл.
source /path/to/file
или
. /path/to/file
Также рекомендуется проверить, существует ли файл перед его загрузкой потому что вы не хотите продолжать выполнение своего скрипта, если файл конфигурации отсутствует.
Я использую этот ...
#!/bin/bash
CFG_FILE=/etc/test.conf
CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g')
eval "$CFG_CONTENT"
Файл Conf разбирается с sed, а затем оценивается как простые переменные asignments
Первые значения ключа синтаксического анализа (также поддерживает = окруженный пробелами)
Второй sed удаляет пробелы вокруг знака = для допустимого значения переменной
Может быть добавлено лечение Futher sed
Все остальные, не соответствующие тексту в файле conf будут удалены (включая # или; комментарий и другие)
Имейте в виду, что команды одиночной строки можно также оценить из этого конфигурационного файла!