shell脚本:替换内容

时间:2013-07-11 15:47:19

标签: bash shell awk sed

我有以下信息的文件

文件名:的 VersionInfo.properties

Installed Version:13.7.0-2
Previous Version:13.6.0-12

FileName: rollback.sh

#!/bin/bash
uninstall_rpm ClientInfrastructure $version

如何从VersionInfo.properties文件的以前的版本获取变量 $ version 的值。 $ version的值应为 13.6.0-12

4 个答案:

答案 0 :(得分:5)

sed解决方案:

version=$(sed -n 's/Previous Version:\(.*\)/\1/p' VersionInfo.properties)

要在脚本中使用它,您可以这样做:

#!/bin/bash
version=$(sed -n 's/Previous Version:\(.*\)/\1/p' VersionInfo.properties)
uninstall_rpm ClientInfrastructure "$version"

如果这是您脚本中的全部内容,那么您基本上可以在命令行中执行此操作。

uninstall_rpm ClientInfrastructure "$(sed -n 's/Previous Version:\(.*\)/\1/p' VersionInfo.properties)"

答案 1 :(得分:2)

version=$(awk 'END {print $2}' FS=':' VersionInfo.properties)

答案 2 :(得分:0)

Grep +参数扩展解决方案:

version=$(grep '^Previous Version:' VersionInfo.properties)
version=${version#*:}
uninstall_rpm ClientInfrastructure $version

答案 3 :(得分:0)

如果文件是这样写的,您只需要正确导出变量$version

version=$(awk -F: '/Previous Version/{print $2}') ./rollback.sh

如果您确实要更改rollback.sh的内容,请使用ed:

ed rollback.sh <<< ",s/\$version/$(awk -F: '/Previous Version/{print $2}')/
w" # w must be on newline