2013-07-11 6 views
2

Je fichier ci-dessous les informationsscript shell: remplacer le contenu

FileName: VersionInfo.properties

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

FileName: rollback.sh

#!/bin/bash 
uninstall_rpm ClientInfrastructure $version 

Comment puis-je obtenir la valeur en variable $ version de Version précédente du fichier VersionInfo.properties. $ Version devrait avoir la valeur 13.6.0-12

Répondre

5

solution sed:

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

Pour l'utiliser dans un script, vous pouvez faire:

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

Si c'est tout ce que vous avez dans votre script, vous pouvez le faire sur la ligne de commande.

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

+1 viens juste de réaliser votre réponse, le mien :) supprimé – anubhava

+2

@anubhava haha, j'ai commencé à écrire 'solution awk' a vu alors deux versions déjà affichées. Commencé avec 'grep' et cela a été posté. Donc 'sed' était mon dernier choix. Je deviens vieux ... pas assez rapide pour suivre tout le monde ici ...;) –

+1

Ceci est seulement une demi-réponse, cependant - il ne montre pas comment utiliser la 'version' dans le rollback.sh scénario. – kojiro

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

solution d'extension des paramètres Grep +:

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

Si le fichier écrit de ce genre que vous avez juste besoin de la $version variable exportée correctement.

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

si vous voulez vraiment changer le contenu de rollback.sh, utilisez ed:

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