2013-07-11 11 views
2

我有文件shell腳本:用以下方式代替內容

文件名:VersionInfo.properties

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

文件名:rollback.sh

#!/bin/bash 
uninstall_rpm ClientInfrastructure $version 

我怎樣才能得到將值變爲$版本以前版本VersionInfo.properties文件的。 $版本應具有價值13.6.0-12

回答

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)" 
+0

+1剛剛意識到你的答案被刪除礦:) – anubhava

+2

@anubhava哈哈,我開始寫'awk'的解決方案,然後看到已經發布兩個版本。以'grep'開始併發布。所以'sed'是我最後的選擇。我越來越老了...並不是很快跟上這裏的每個人......) –

+1

這只是半答案,但它沒有顯示如何在rollback.sh中使用'version'腳本。 – kojiro

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

的grep +參數擴展的解決方案:

version=$(grep '^Previous Version:' VersionInfo.properties) 
version=${version#*:} 
uninstall_rpm ClientInfrastructure $version 
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