2016-09-21 1 views
0

Pour commande exemple ci-dessousde script Bash pour analyser la sortie d'une commande

# sha512sum /home/bin.tar 

donne cette sortie:

7847a537b5db4434c075f18319caf12090cb0f19640190cbdf27e28a7b40b568127dfe9ec1c06604a87887ad403b618edeb42d1c41366b7a3e91d47b8d754ea4 /home/bin.tar 

Comment puis-je attribuer seulement une partie de hachage de cette sortie à une variable en bash afin de comparer le hachage calculé avec un autre hachage dans une autre variable?

Ce que j'ai essayé que attribue les parties qui correspond à condition grep (je ne ai besoin de la première partie):

#! /bin/sh 

RESULT="$(sha512sum /home/bin.tar | grep -o " /home/bin.tar")" 

echo "Result:" 

echo $RESULT 

exit 

Sortie

Result: 
/home/bin.tar 

Répondre

3

Cela devrait le faire:

RESULT="$(sha512sum /home/bin.tar | cut -d' ' -f1)" 

ou

RESULT="$(sha512sum /home/bin.tar)" 
RESULT="${RESULT%% *}" 

ou

RESULT="$(sha512sum /home/bin.tar | grep -o '^[^ ]*')" 
+0

C'était très rapide et directement la réponse. Je vous remercie! – mtekeli

2

le faire avec awk

RESULT="$(sha512sum /home/bin.tar | awk '{print $1}')" 

ou en utilisant des tableaux bash simples. Il suffit d'exécuter ces commandes sur la console.

md5Output=($(sha512sum /home/bin.tar)); printf "%s\n" ${md5Output[0]} 
+0

Cela fonctionne aussi bien! Je vous remercie! – mtekeli