Bash - 遍历 INI 部分
Bash - looping through INI sections
我的问题是关于如何读取包含多个部分的 ini 文件并将这些部分的值循环输入到变量中。
这是我的 batch.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 脚本中,我想一次循环一个部分,并将值分配给 bash 脚本中的变量。我的伪代码是这样的:
for sectionx = 1 to (number of sections)
do
my_var1=sectionx(val1)
my_var2=sectionx(val2)
echo $my_var1
echo $my_var2
done
输出:
/home/test/
-i -200 -j 400%
/home/test2/
-i -320 -j 333%
/home/test3/
-i -223 -j 555%
如果您需要阅读 bash 中的 .ini
个文件,我建议您使用一个已经实现的解决方案,例如 rudimeier 的 Bash ini parser 就可以完美地工作。
还有其他选项,例如shini or the parser by 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%'
我的问题是关于如何读取包含多个部分的 ini 文件并将这些部分的值循环输入到变量中。
这是我的 batch.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 脚本中,我想一次循环一个部分,并将值分配给 bash 脚本中的变量。我的伪代码是这样的:
for sectionx = 1 to (number of sections)
do
my_var1=sectionx(val1)
my_var2=sectionx(val2)
echo $my_var1
echo $my_var2
done
输出:
/home/test/
-i -200 -j 400%
/home/test2/
-i -320 -j 333%
/home/test3/
-i -223 -j 555%
如果您需要阅读 bash 中的 .ini
个文件,我建议您使用一个已经实现的解决方案,例如 rudimeier 的 Bash ini parser 就可以完美地工作。
还有其他选项,例如shini or the parser by 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%'