在shell脚本中解析配置文件

时间:2015-08-06 05:47:54

标签: linux bash shell awk config

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

name.conf文件:

Name1 : abc
Name2 : xyz

我可以通过命令

解析值
name1=$(awk '/^Name1/{print $3}' name.conf)
name2=$(awk '/^Name2/{print $3}' 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

1 个答案:

答案 0 :(得分:0)

比这更容易。只需将所有变量放在一个文件中(例如“vars”),格式为“name = value”:

name1 = abc
name2 = xyz

然后在主脚本中,使用“source”加载它:

#!/bin/bash
source vars

或使用句号也有效:

#!/bin/bash
. vars

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

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

echo $name1

该输出应为'abc'