我需要将配置文件中定义的一些变量与bash中的输入文件进行匹配,并将该变量替换为配置文件输入。
配置文件
var1=value1
var2=value2
输入文件
My user value is [[var1]] and
some lines which does not have configuration variables
My client value is [[var2]]
some lines which does not have configuration variables
上面第1行和第3行中的var1和var2必须替换为配置文件中的值 其余的线条保持不变。
我能够在关联数组中读取配置,例如mapVals和输入文件到数组说inpArray。
现在我在循环中使用以下代码进行匹配。
for key in "${!mapVals[@]}"
do
match=\[\[$key\]\]
echo $match
let index=0
for line in "${inpArray[@]}"
do
if [[ $line =~ $match ]];
then
echo $line
fi
index=$(($index+1))
done
done
对于[[var1]]和[[var2]]匹配,我获得了line1和line3的匹配。 输出看起来像
[[var1]]
My user value is [[var1]] and
My client value is [[var2]]
[[var2]]
My user value is [[var1]] and
My client value is [[var2]]
完全匹配和替换的方式应该是什么。 如果重复请评论。