【发布时间】:2015-11-24 04:49:02
【问题描述】:
我正在做一点 Shell/Bash 自动化,我有一个属性文件,我需要用新值更新。
属性文件的格式为:key.name=value。也就是说,如果属性键有多个单词,则用句点分隔。
我有这个方法,我试图用我的新变量替换旧变量。我遇到的一个问题是该方法中的最后一次调用将覆盖以前的编辑......
我对 shell/bash 脚本非常陌生,我不确定使用 shell 完成多个值替换的最佳方法是什么。任何帮助表示赞赏。谢谢。
旧方法
modify_properties () {
awk -F"=" -v new_var1="$variable1" '/property.name1/{$2=new_variable;print;next}1' template.properties > new.properties
awk -F"=" -v new_var2="$variable2" '/property.name2/{$2=new_variable;print;next}1' template.properties > new.properties
awk -F"=" -v new_var2="$variable2" '/property.name3/{$2=new_variable;print;next}1' template.properties > new.properties
}
新方法
modify_properties () {
awk -F"=" -v new_ip="$private_ip" -v new_dns="$public_dns" '/prop.internaladdress/{$2=new_ip}/prop.externaladdress/{$2=new_dns}/prop.hostname/{$2=new_dns}1' template.properties > new.properties
}
【问题讨论】:
-
将所有 awk 脚本位放入一个 awk 脚本而不是三个。在第一个电话之后使用
new.properties。等 -
我更新了方法,但我想用 2 个变量更改 3 个不同的属性。其中两个属性将具有相同的变量 (
variable2)