shell脚本:替换内容
我有一个包含以下内容的文件 文件名:VersionInfo.propertiesshell脚本:替换内容,shell,sed,awk,grep,Shell,Sed,Awk,Grep,我有一个包含以下内容的文件 文件名:VersionInfo.properties Installed Version:13.7.0-2 Previous Version:13.6.0-12 Installed Version:13.7.0-4 Previous Version:13.7.0-2 文件名:main.sh #!/bin/ksh new_maj_version=$1 # sample content: 13.7.0 new_min_version=$2 # sample conte
Installed Version:13.7.0-2
Previous Version:13.6.0-12
Installed Version:13.7.0-4
Previous Version:13.7.0-2
文件名:main.sh
#!/bin/ksh
new_maj_version=$1 # sample content: 13.7.0
new_min_version=$2 # sample content: 4
每次运行main.sh时,我都希望它编辑我的VersionInfo.properties文件。安装的版本应切换到以前的版本,我的新主版本和新主版本应放置在安装的版本中。我怎样才能做到呢
运行my main.sh后的示例输出
#!/bin/ksh
new_maj_version=$1 # sample content: 13.7.0
new_min_version=$2 # sample content: 4
文件名:VersionInfo.properties
Installed Version:13.7.0-2
Previous Version:13.6.0-12
Installed Version:13.7.0-4
Previous Version:13.7.0-2
尝试以下操作:(将其保存到main.sh):
试一试
main.sh "13.7.0" "4"
这应该能奏效
sed -e "/Installed Version/{s/Installed Version:\(.*\)/Installed Version:$major_version-$minor_version\nPrevious Version:\1/; n}" -e '/Previous Version/{d}'
VersionInfo.properties
它只做了一次。第二次它没有移动我的安装版本到以前的版本
main.sh“13.7.0”“4”安装版本:13.7.0-4以前的版本:13.6.0-12(我第二次运行它)main.sh“13.7.0”“9”安装版本:13.7.0-9以前的版本:13.6.0-12
@sravs448,它适合我。注意,上面的命令将更新的版本写入标准输出,您需要添加管道来更新原始的VersionInfo.properties
。只要您继续适当地更新$major\u version
和$minor\u version
,这将在后续运行中继续工作。现在我有了rollback.sh文件,其中版本号硬编码为uninstall\u rpm ClientInfrastructure 13.6.0-12
。如何使此回滚脚本在VersionInfo.properties
中选择以前的版本
,而不是硬编码它?您的“rollback.sh”问题没有清楚描述。什么是硬编码?执行rollback.sh之后,会发生什么?部件卸载\u rpm ClientInfrastructure
从哪里来?我再也忍不住了。很抱歉这是对你当前问题的回答。如果它解决了你的问题,我很高兴。你的回答解决了我最初的问题。如果你也想解决其他问题,请看