2013-07-11 6 views
2

У меня есть файл с следующей информациейсценария оболочки: заменить содержимое

FileName: 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. $ Версия должна иметь значение 13.6.0-12

ответ

5

sed решение:

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

Чтобы использовать его в скрипт вы можете do:

#!/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

Это только полу-ответ, хотя - он не показывает, как использовать 'version' в rollback.sh скрипт. – 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 rollback.sh <<< ",s/\$version/$(awk -F: '/Previous Version/{print $2}')/ 
w" # w must be on newline 
Смежные вопросы