2016-09-21 6 views
0

Для команды экземпляра нижеBash скрипт для разбора вывода команды

# sha512sum /home/bin.tar 

дает этот вывод:

7847a537b5db4434c075f18319caf12090cb0f19640190cbdf27e28a7b40b568127dfe9ec1c06604a87887ad403b618edeb42d1c41366b7a3e91d47b8d754ea4 /home/bin.tar 

Как я могу назначить только хеш-часть этого вывода переменной в Баш в для сравнения вычисленного хеша с другим хэшем в другой переменной?

То, что я попытался назначает только те части, которые матчей условие в Grep (нужно только первая часть):

#! /bin/sh 

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

echo "Result:" 

echo $RESULT 

exit 

Выход

Result: 
/home/bin.tar 

ответ

3

Это должно сделать это:

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

или

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

или

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

Это было очень быстро и прямо ответ. Спасибо! – mtekeli

2

Делают это с awk

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

Или с помощью простых bash массивов. Просто запустите эти команды над консолью.

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

Это тоже хорошо работает! Спасибо! – mtekeli