Запомнить последний вывод и применить его дальше

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Запомнить последний вывод и применить его дальше

Сообщение Grih65kop »

Необходимо получить MD5 сумму страницы, затем сравнить эту сумму с имеющимися и вывести результат.

Код: Выделить всё

#!/bin/bash
GET yandex.ru | md5sum

Получаем хеш сумму. Каким образом мне её запомнить в память или как то сохранить что бы я смог затем её использовать при сравнение, возможно нужно как то указать башу что мы должны использовать для сравнения последний полученый вывод. Например:

Код: Выделить всё

if [ `как то сравниваем` == "492ea498978383b688248fe7be528ab7"" ]; then
echo "1"
if [ `как то сравниваем` == "548d155e6d3d3ddd83f1d369524e59be"" ]; then
echo "2"
...
fi
fi
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Запомнить последний вывод и применить его дальше

Сообщение Lan4 »

Код: Выделить всё

blah=`GET yandex.ru | md5sum`
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: Запомнить последний вывод и применить его дальше

Сообщение liaonau »

Можно не запоминать даже, сразу сравнить.

Код: Выделить всё

[[ $(curl -s ya.ru |md5sum|sed 's/\s.*$//') == "5f9f0fe6a2ba10ae6382cc01c2d341fb" ]] && echo equal || echo not equal
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Запомнить последний вывод и применить его дальше

Сообщение t.t »

liaonau писал(а):
05.07.2011 23:05
Можно не запоминать даже, сразу сравнить.

Код: Выделить всё

[[ $(curl -s ya.ru |md5sum|sed 's/\s.*$//') == "5f9f0fe6a2ba10ae6382cc01c2d341fb" ]] && echo equal || echo not equal
Читайте внимательнее: сравнивать не один раз нужно. Именно поэтому удобнее "запоминать".
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Запомнить последний вывод и применить его дальше

Сообщение sgfault »

Grih65kop писал(а):
05.07.2011 21:28
Получаем хеш сумму. Каким образом мне её запомнить в память или как то сохранить что бы я смог затем её использовать при сравнение,

А почему вы не хотите все это записать в файлы?
Например, так: сделайте два файла, в один - все суммы, с которыми вы хотите сравнивать (назовем его hash_list.txt), а в другой - сумму, которую вы хотите сравнить (назовем его hash.txt). Тогда у вас получиться что-то такое

Код: Выделить всё

sgf@shilvana:~/tmp$ cat hash.txt
492ea498978383b688248fe7be528ab7

Код: Выделить всё

sgf@shilvana:~/tmp$ cat hash_list.txt
492ea498978383b688248fe7be528ab7
548d155e6d3d3ddd83f1d369524e59be


и скрипт будет примерно таким

Код: Выделить всё

GET yandex.ru | md5sum | cut -d' ' -f1 > hash.txt
if grep -q -x -f hash.txt hash_list.txt ; then
   echo URA;
fi

`cut ..` после md5sum можно убрать, но тогда сумма будет записана в виде

Код: Выделить всё

2b40827f4bddd58bdf4cc4c5eb041c2c  -

и в файле hash_list.txt суммы тоже должны быть записаны в том же виде.

Или, если писать что-то похожее на ваш скрипт (вывод разных чисел при разной сумме), то что-нибудь типа такого (будет выводить номер строки совпавшей суммы из hash_list.txt или ничего, если совпадения не было):

Код: Выделить всё

grep -n -x -f hash.txt hash_list.txt  | cut -d ':' -f1

Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Запомнить последний вывод и применить его дальше

Сообщение drBatty »

Код: Выделить всё

ksu@ksu:~$ md5sum index.html
8a23327e16d76207554d9bfc8d2cac1b  index.html
ksu@ksu:~$ md5sum index.html >index.html.md5
ksu@ksu:~$ md5sum -c index.html.md5
index.html: ЦЕЛ
ksu@ksu:~$ echo $?
0
ksu@ksu:~$ :>index.html
ksu@ksu:~$ md5sum -c index.html.md5
index.html: ПОВРЕЖДЁН
md5sum: ПРЕДУПРЕЖДЕНИЕ: НЕ совпала 1 вычисленная контрольная сумма
ksu@ksu:~$ echo $?
1
ksu@ksu:~$

всё просто...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: