解析 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'
我正在尝试解析 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'