CONFIGFILE="/path/to/config"
echo "=$ADMIN= =$TODO= =$FILE=" #these variables are not defined here
eval $(sed '/:/!d;/^ *#/d;s/:/ /;' < "$CONFIGFILE" | while read -r key val
do
#verify here
#...
str="$key='$val'"
echo "$str"
done)
echo =$ADMIN= =$TODO= =$FILE= #here are defined
5条答案
按热度按时间pftdvrlh1#
你不想去找它,所以你应该:
1.read配置,2.验证行3.评估它们
配置文件示例
如果你运行上面的示例应该得到(未测试):
当然这不是最好的解决方案-也许有人张贴一个更好的。
ffvjumwh2#
您可能想看看可以与
sudo apt-get install cfget
一起安装的cfget
。baubqpgj3#
v8wbuo2f4#
基于
grep
的替代方案似乎更具可读性:其中:
-v
grep选项表示排除匹配行^\[\|^#
选择所有以[
或#
开头的行(包含解析器部分和注解)只有当你的配置文件在
=
周围没有空格时,它才能工作(如果你想用Python使用space_around_delimiters=False
生成配置,请参阅https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.write)支持的配置示例:
8tntrjer5#
你可以使用bash本身来解释ini值,通过:
示例文件:
查看更多示例:How do I grab an INI value within a shell script?
或者你可以使用bash ini-parser,它可以在The Old School DevOps blog site找到。