Как проверить результат команды для вывода или отсутствия вывода в операторе zsh if?

Как я упоминал в https://unix.stackexchange.com/a/506429/5132, операционные системы на основе Linux -не обязательно используют одни и те же программы друг в друге. Известно множество реализаций нескольких довольно простых программ.

Они включают, но не ограничиваются:

  • ifconfigимел 2 реализации: одну в GNU inetutils , а другую в NET -3 net -tools . Сейчас их 3, третий мой. (См.https://unix.stackexchange.com/a/504084/5132.)
  • suимеет 2 реализации: одну в util -linux и другую в shadow . Debian переключился с одного на другой в 2018 году, что сделало неверными несколько старых вопросов и ответов здесь, на этом веб-сайте. (См.https://unix.stackexchange.com/a/460769/5132и, например, "su vs su-(в Debian ):почему PATH одинаковый? ".)
  • В Debian/Ubuntu существует бесчисленное множество (на самом деле 4 )возможных мест, откуда можно получить mailxкоманду :GNU Mailutils, BSD mailx, NMH и s -гвоздь. Они отличаются синтаксисом командной строки -. (См. https://unix.stackexchange.com/a/489510/5132.)
  • viможет быть по-разному реликвией/традиционнойvi(исходной версией Билла Джоя, которая используется по умолчанию viв Arch Linux, но, напротив, вообще недоступна в виде пакета в Debian Linux ), STEVIE Брэма Муленаара -производный VIM в режиме совместимости, или даже Элвис Кита Бостика -производный nvi.

Заметьте, что, строго говоря, это не вариация среди различных инструментов GNU . Инструменты для операционных систем на базе Linux -не исключительно из проекта GNU. Такие операционные системы также имеют инструменты из наборов инструментов, отличных от -GNU.

Кроме того, между операционными системами на базе Linux -существуют различия, когда речь идет об использовании одних и тех же наборов инструментов, тоже . Все они строятся со своими собственными наборами различных локальных модификаций.Например:

  • systemd построен в Arch Linux иначе, чем в семействах Debian и Fedora операционных систем на базе Linux -. В частности, он построен с опцией конфигурации, которая говорит об исключении большинства (, но не всех )механизмов совместимости ван Смуренбурга rc. (См. https://unix.stackexchange.com/a/389298/5132,https://unix.stackexchange.com/a/451966/5132и https://unix.stackexchange.com/a/471871/5132.)
  • В Debian Linux, GNU coreutils :
    • имеет дополнительный параметр --ipsдля команды who. (См. https://unix.stackexchange.com/a/24279/5132.)
    • применяет требование conv=notruncпри вводе команды ddoflag=append.
  • В Debian Linux оболочка Bourne Again поставляется с (неправильно упакованной)clear_consoleкомандой, которая является одним из многих механизмов, заставляющих Грега Вуледжа (и др. )для очистки экрана xyr. (См. https://unix.stackexchange.com/a/451150/5132.)
  • В Debian Linux и Arch Linux встроенная способность grottyгенерировать «новые» последовательности управления терминалом из ISO 8613 -6 :1994 и ECMA -48 :1976 вместо (очень )старый TTY -37 управляющих последовательностей с 1968 года, отключен. Arch Linux также вызывает перевод одинарных кавычек и дефисов в латинский -1 апостроф и минус в некоторых случаях.
  • Различные операционные системы на основе Linux -различаются в зависимости от того, является ли ncurses «широким» или «узким».
  • В Debian Linux «маленькая» версия GNU nanoимеет меню, измененное из-за исправлений Debian.
  • В Arch Linux, Heirloom/Traditional viлокально исправляется несколькими способами, которые отличают его от оригинала, включая другой каталог для сохранения файлов и поддержку редактирования клавиш клавиатуры, которых Билл Джой никогда не имел на своем ADM -Клемма 3A (например PgUp и PgDn , см. https://vi.stackexchange.com/q/9313/19613).
  • Различные операционные системы на основе Linux -изначально настраивают OpenSSH по-разному.Arch Linux, например, выключает ChallengeResponseAuthentication, выключает PrintMotdи включает UsePAM. Debian Linux применяет обширный набор исправлений .

И так далее.

Дополнительная литература

0
24.05.2020, 05:57
1 ответ

diff обеспечивает нулевой статус выхода, если различий не обнаружено, поэтому просто используйте diffодин раз и при необходимости выведите сообщение:

if diff file1 file2; then
    echo 'no diff'
fi

    Утилита
  • diffможет иметь опцию -s/--report-identical-files( расширение спецификации POSIX ). Это упростит команду до:

    diff -s file1 file2
    
  • Причиной ошибки [1,8c1,8: not foundбыл неправильный синтаксис :[, который должен появиться сам по себе с допустимым выражением и закрывающим аргументом ]. Информацию о том, как использовать test, можно найти здесь на unix.stackexchange(ссылкассылкассылка)и на страницах руководства man 1 testиman 1p test

  • В test.shпервая строка — #!/bin/zsh, но затем скрипт запускается с shинтерпретатором (, который, вероятно, не являетсяzsh). Если вы хотите использовать функции zsh, убедитесь, что вы действительно запускаете скрипт сzsh
3
18.03.2021, 23:34

Теги

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