Shell脚本读取/格式化配置文件

时间:2015-10-12 05:07:21

标签: bash shell command-line

我搜索了几个地方并没有找到满足我需求的地方,基本上就是配置:

name1 = value1;
name2= value2
name3 =value3 // comments

name4=value4 //empty line above and/or below

我需要一个shell脚本来读取配置文件并解析所有名称/值对,并删除开始/尾随分号/空格,并忽略注释和空行。

我第一次尝试

while read -r name value
do
echo "Content of $name is ${value//\"/}"
done < $1

我试图通过以下方式修剪namevalue

"${var//+([[:space:]])/}"

但仍不确定如何删除分号并忽略空行和注释?

1 个答案:

答案 0 :(得分:1)

这是可以使用IFS的地方。但是,您必须依赖于sed,并假设格式正确的配置文件。没有像这样的多行值。

parseconf() {
  sed -e 's/^[ ;]*//' \
      -e 's/[ ;]*$//' \
      -e 's/\/\/.*//' \
      -e 's/ *= */=/' $1 \
  | while IFS="=" read -r name value
  do
    [ -n "$name" ] && echo "name=$name value=$value"
  done
}
parseconf $1