Если вам нужно прочитать .ini
файлы в bash, я предлагаю вам использовать уже реализованное решение, например, Bash ini parser от rudimeier работает отлично.
Существуют также другие опции, такие как shini или синтаксический анализатор albfan .
Используя значение rudimeier, вы получите все значения вПеременные bash названы соответственно.
Например, для вашего ini
[section1]
val1='/home/test/'
val2='-i -200 -j 400%'
[section2]
val1='/home/test2/'
val2='-i -320 -j 333%'
[section3]
val1='/home/test3/'
val2='-i -223 -j 555%'
Вы получите следующие переменные bash:
INI__ALL_SECTIONS='section1 section2 section3'
INI__ALL_VARS='INI__section1__val1 INI__section1__val2 INI__section2__val1 INI__section2__val2 INI__section3__val1 INI__section3__val2'
INI__NUMSECTIONS=3
INI__section1__val1=/home/test/
INI__section1__val2='-i -200 -j 400%'
INI__section2__val1=/home/test2/
INI__section2__val2='-i -320 -j 333%'
INI__section3__val1=/home/test3/
INI__section3__val2='-i -223 -j 555%'
С этим вы можете перебирать разделы ипеременные, например:
for section in $INI__ALL_SECTIONS; do
echo "Variables in $section:";
for var in `declare | grep "^INI__"$section"__"`; do
echo $var;
done;
done;
даст:
Variables in section1:
INI__section1__val1=/home/test/
INI__section1__val2='-i -200 -j 400%'
Variables in section2:
INI__section2__val1=/home/test2/
INI__section2__val2='-i -320 -j 333%'
Variables in section3:
INI__section3__val1=/home/test3/
INI__section3__val2='-i -223 -j 555%'