@Iceforest

Как сравнить вывод скрипта с файлом?

есть скрипт test.sh, в результате он дает большой текстовый вывод, нужно сравнить этот вывод с эталонным файлом

пробовал разные варианты, но либо дает ошибки, либо некорректное сравнение

result=$(./test.sh)| cmp -s $result test && echo 1||echo 0

cmp -s (./test.sh) test && echo 1||echo 0
и многие другие
подскажите, пожалуйста, как все-таки правильно сверить, должно быть 100 процентное совпадение с эталонным файлом, в результате команды должна быть 1.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
как все-таки правильно сверить, должно быть 100 процентное совпадение с эталонным файлом в результате команды должна быть 1.

./test.sh | if cmp -s - test ; then echo 1 ; else echo 0 ; fi


result=$(./test.sh)| cmp -s $result test

это почти попытка сравнить текст выводимый test.sh с содержимым файла test, но здесь не нужен конвейер и cmp так не работает.

cmp -s (./test.sh) test

Это почти рабочий вариант для bash, полностью рабочий выглядит так: cmp -s <( ./test.sh ) test. Но из-за того, что конструкция <(…) специфична для bash этот вариант на мой взгляд менее предпочтителен чем вариант ./test.sh | if cmp -s - test.
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
cmp -s <(./test.sh) test && echo 1||echo 0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Возьмите какой-нибудь хэш от файла, от вывода скрипта и сравните.
Ответ написан
Комментировать
@mureevms
$ echo 111 > 1
$ echo 111 > 2
$ diff 1 2 -q; echo $?   
0
                                                                                                                   
$ echo 111 > 1
$ echo 222 > 2
$ diff 1 2 -q; echo $?      
Files 1 and 2 differ
1

$ man diff
...
EXIT STATUS
     The diff utility exits with one of the following values:

           0       No differences were found.
           1       Differences were found.
           >1      An error occurred.
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы