Дата поста: 24-01-2013
Если вы используете Linux в качестве своей системы, то вам часто приходится работать с INI файлами, т.к практически все конфигурационные файлы в Linux имеют такой формат. Данный пост поможет вам парсить такие файлы.
[секция]
ключ1=значение1
ключ2=значение2
;ключ3=значение3
Бывают задачи, когда нужно автоматизировать этот процесс. Так как мы используем операционную систему Linux, то грех не воспользоваться Bash'ем.
Написал небольшой скрипт, с помощью которого мы можем получить значение ключа INI файла в любой секции.
#!/bin/bash
section_f=$1
the_key=$2
mysqlconf=$3
if [ ! -r "$mysqlconf" ]
then
exit 1;
fi
exec < $mysqlconf
while read section; do
section=${section// /}
if [ "$section" ='['$section_f']' ] ; then
IFS='='
while read key value; do
key=${key// /}
if [ $key = $the_key ]; then
value=${value// /}
echo $value
exit 1
fi
done
fi
done
Как видно, в качестве первого параметра скрипт ожидает секцию, второго — ключ, а третьего — адрес ini файла.
Ну и опробуем скрипт в работе на примере ini файла следующего содержания
[global]
hostname = localhost
dbname= asteriskcdrdb
password = gjhjkm
user = user
userfield=1
;port=3306
;sock=/tmp/mysql.sock
root@debian:~# parser.sh global user /etc/asterisk/cdr_mysql.conf
gjhjkm
Обратите внимание, что скрипт выводит значение без пробелов, т.е ini файл может быть в произвольной форме.
Вот таким простым способом можно парсить ini файл в Linux.