Arrays 从shell脚本有效地访问变量

Arrays 从shell脚本有效地访问变量,arrays,linux,bash,shell,unix,Arrays,Linux,Bash,Shell,Unix,我有一个ini配置文件,我需要使用此配置创建一个shell脚本。访问所有变量的最简单方法是什么,可以从shell脚本有效地使用 我可以用数组还是别的什么?现在计划查找[]括号的计数,然后通过awk逐个获取所有变量。请建议是否有任何最简单的方法来有效地 cat app.ini 下面是我的示例配置文件的输出。可以是N个块 [APP1] name=Application1 StatusScript=/home/status_APP1.sh startScript=/home/start_APP1.

我有一个ini配置文件,我需要使用此配置创建一个shell脚本。访问所有变量的最简单方法是什么,可以从shell脚本有效地使用

我可以用数组还是别的什么?现在计划查找[]括号的计数,然后通过awk逐个获取所有变量。请建议是否有任何最简单的方法来有效地

cat app.ini 
下面是我的示例配置文件的输出。可以是N个块

[APP1]
name=Application1
StatusScript=/home/status_APP1.sh
startScript=/home/start_APP1.sh
stopScript=/home/stop_APP1.sh
restartScript=/home/restart.APP1.sh
logdir=/log/APP1/

[APP2]
name=Application2
StatusScript=/home/status_APP2.sh
startScript=/home/start_APP2.sh
stopScript=/home/stop_APP2.sh
restartScript=/home/restart.APP2.sh
logdir=/log/APP2/
.
.
.
.
.
[APPN]
name=ApplicationN
StatusScript=/home/status_APPN.sh
startScript=/home/start_APPN.sh
stopScript=/home/stop_APPN.sh
restartScript=/home/restart.APPN.sh
logdir=/log/APPN

/

考虑使用类似于bash ini解析器的库。它涵盖了很多细微差别,如缩进、空格、注释等

您案例的示例可能如下所示:

 #!/bin/bash

. bash-ini-parser

cfg_parser app.ini

cfg_section_APP1
echo $name

cfg_section_APP2
echo $logdir

cfg_section_APPN
echo $logdir

下一行帮助我们定位每个部分中的特定值

sed -nr "/^\[APP1\]/ { :l /^name[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" app.ini

您想一次使用一个
[APP]
节将一些变量传递给另一个命令吗?你能至少在伪代码中显示调用代码的样子吗?如果你从外部源读取变量,在插入它们的值时,你肯定应该在它们的值周围使用双引号;自述文件本身将其描述为“与其说是一个可靠的解析器,不如说是一个黑客”。非常好的选择,组织得很好:)