Shell Script "|| {}" Читаемая альтернатива - PullRequest
4 голосов
/ 07 января 2012

Я искал способ проверить, установлена ​​ли программа с использованием Shell Script, когда натолкнулся на этот ответ , который содержал следующий код:

hash foo 2>&- || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }

Но этот код не 'т (очень) читабельно, какова альтернатива этому синтаксису?

Ответы [ 2 ]

9 голосов
/ 07 января 2012

Читабельность очень субъективна. Я особенно думаю, что оригинал очень читабелен, если вы знаете, что || означает короткое замыкание ИЛИ . Таким образом, вы читаете оригинал как «сделайте это, ИЛИ это, если это не удастся».

Эквивалентный код без использования ||:

if ! hash foo 2>&-
then
    echo >&2 "I require foo but it's not installed.  Aborting."
    exit 1
fi
2 голосов
/ 07 января 2012

это отлично читается для всех, кто привык к сценариям оболочки, потому что это идиома. единственным препятствием для читабельности является отсутствие перевода строки:

hash foo 2>&- || {
  echo >&2 "I require foo but it's not installed.  Aborting."
  exit 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...