我搜索了几个地方并没有找到满足我需求的地方,基本上就是配置:
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
我试图通过以下方式修剪name
和value
"${var//+([[:space:]])/}"
但仍不确定如何删除分号并忽略空行和注释?
答案 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