код выхода разности

Если я работаю diff -q на двух файлах и они идентичны, код выхода, сгенерированный echo $? 0; если файлы отличаются, код выхода 1. Почему это? Каким образом является первым diff успех и второе отказ?

Я использовал термины "успех" и "отказ" на основе моего чтения и ограничил понимание http://mywiki.wooledge.org/BashGuide/TestsAndConditionals:

  1. Статус выхода
    Каждая команда приводит к коду выхода каждый раз, когда она завершается.
    Этот код выхода используется любым приложением, запущенным это для оценки
    пошло ли все хорошо. Этот код выхода похож на возвращаемое значение от
    функции. Это - целое число между 0 и 255 (включительно). Конвенция
    диктует, что мы используем 0 для обозначения успеха и любого другого числа для обозначения
    какой-то отказ. Определенное число совершенно специализировано,
    и используется для вывода подсказок относительно того, что точно пошло не так, как надо.

Я должен был читать man diff до самого конца, где конвенция, используемая разработчиками, является четкой.

8
задан 16 November 2015 в 14:20

2 ответа

От man diff:

Статус выхода 0, если исходные данные - то же, 1, если отличающийся, 2 если проблема.

я свободно признаю, что это не могло бы быть абсолютно стандартно , но коды выхода [еще 118], что Вы назвали бы «рекомендациями», чем фактические правила .

enter image description here

В этом случае, отклоняясь от стандарта позволяют Вам легко бежать diff в сценариях.

diff a b && echo "no difference" || echo "differences!"

Это подобно grep, который выйдет 0, что-то, найден, и 1, если что-то не найдено. Я не могу объяснить ориентацию между 0 и 1 для diff. Я предполагаю, что они пошли с C-стандартом булевы результаты.

Это действительно не имеет значения. Это - просто произвольное число.

14
ответ дан 23 November 2019 в 05:26

man diff говорит нам

СТАТУС ВЫХОДА

   The following exit values shall be returned:

    0     No differences were found.

    1     Differences were found.

   >1     An error occurred.

, Ваш запрос выхода оценивает «успех», и «неудача» - самоограничивающий выбор. У программ есть целые 8 битов для статуса выхода, ценностей от 0 до 255.

3
ответ дан 23 November 2019 в 05:26

Другие вопросы по тегам:

Похожие вопросы: