我有一个ini配置文件,我需要使用此配置创建一个shell脚本。访问所有变量的最简单方法是什么,可以从shell脚本中有效使用。
我可以使用数组吗?现在计划找到[]括号的计数,然后通过awk逐个获取所有变量。请建议是否有任何最简单的方法来有效
cat app.ini
在我的示例配置文件的输出下面。可以是N no of Blocks。
[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
/
答案 0 :(得分:1)
考虑使用像bash-ini-parser https://github.com/albfan/bash-ini-parser这样的库。它涵盖了许多细微差别,如缩进,空格,注释等。
您案例的示例可能如下所示:
#!/bin/bash
. bash-ini-parser
cfg_parser app.ini
cfg_section_APP1
echo $name
cfg_section_APP2
echo $logdir
cfg_section_APPN
echo $logdir
答案 1 :(得分:0)
下面的行帮助我们找到每个部分中的特定值。
sed -nr "/^\[APP1\]/ { :l /^name[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" app.ini