从shell脚本

时间:2018-03-02 06:36:36

标签: arrays linux bash shell unix

我有一个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

/

2 个答案:

答案 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