我有一个以下格式的属性文件(说文件名是 oldProperties.properties)
group1.value1=Hello
group1.value2=World
group1.value3=BlaBla
group1.vlaue4=blabla2
现在我想开发一个脚本来更改属性文件中的特定值并创建一个新文件。该脚本应将属性的 propertyName 和 newValue 作为命令行参数。
changePropertyValue.ksh group1.value3 GoodBye
结果文件(比如 newProperties.properties)应该如下所示
group1.value1=Hello
group1.value2=World
group1.value3=GoodBye
group1.vlaue4=blabla2
为此,我在 changePropertyValue.ksh 中编写了这些代码行
property_name=$1
new_value=$2
old_properties=oldProperties.properties
new_properties=newProperties.properties
echo "" > $new_properties
cat $old_properties | awk 'BEGIN{ FS="=";OFS="=" } {if($1=="$property_name") $2="$new_value"; print $0;}' >> $new_properties
我正在启动这个
changePropertyValue.ksh group1.value3 GoodBye
现在,当我对 newProperties 文件执行 grep 操作时,我得到了旧值,即
grep group1.value3 newProperties.properties
output
group1.value3=BlaBla
同时,如果我直接在命令行上启动 awk 命令,它工作正常,即如果我启动它
cat oldProperties.properties | awk 'BEGIN{ FS="=";OFS="=" } {if($1=="group1.value3") $2="GoodBye"; print $0;}' | grep group1.value3
output is :-
group1.value3=GoodBye
任何人都可以告诉我在编写脚本时我做错了什么。
谢谢