解析 shell 脚本中的配置文件

Parsing a config file inside shell script

我正在尝试解析 shell 脚本中的 ini 文件。

name.conf 文件:

Name1 : abc
Name2 : xyz

我可以通过命令

解析值
name1=$(awk '/^Name1/{print }' name.conf)
name2=$(awk '/^Name2/{print }' name.conf)

我想知道是否有某种方法可以将我的配置内容分组并解析它

name.conf 文件:

[Names]
abc
xyz
[Values]
blah
blahh

我只需要 shell 数组中的值说出名称并像这样打印它们

for var in $names
do
   echo $var
done
for var in $values
do
   echo $var
done

比那更容易。只需将所有变量放入文件中(例如 "vars"),格式为 "name = value":

name1 = abc
name2 = xyz

然后在你的主脚本中,使用"source"加载它:

#!/bin/bash
source vars

或者使用句号也可以:

#!/bin/bash
. vars

虽然这只有在您 运行 vars 文件所在的脚本时才有效。 Nagios 使用这种方法能够 运行 系统中任何地方的脚本:

#! /bin/bash
PROGNAME=`basename [=13=]`
PROGPATH=`echo [=13=] | sed -e 's,[\/][^\/][^\/]*$,,'`
. $PROGPATH/vars

echo $name1

输出应该是'abc'