в Zsh, как я могу сделать условие для завершения программы? - PullRequest
12 голосов
/ 02 февраля 2010

Я хочу сделать что-то вроде:

if [[ git status &> /dev/null ]]; then
   echo "is a git repo";
else
   echo "is not a git repo";
fi

кроме того, что я не знаю, как сделать проверку статуса выхода. Как мне это исправить?

Спасибо

Ответы [ 3 ]

17 голосов
/ 02 февраля 2010

Просто так

if git status &> /dev/null
then
   echo "is a git repo";
else
   echo "is not a git repo";
fi

Или в более компактной форме:

git status &> /dev/null && echo "is a git repo" || echo "is not a git repo"
11 голосов
/ 02 февраля 2010

Использовать $?, он содержит последние команды код возврата

РЕДАКТИРОВАТЬ: точный пример:

git status >& /dev/null
if [ $? -eq 0 ]; then
  echo "git status exited successfully"
else
  echo "git status exited with error code"
fi
0 голосов
/ 18 апреля 2017

Другой формой, которую я часто использую, является следующая:

git status &> /dev/null
if (( $? )) then
    ...

Это немного более компактно, чем принятый ответ, но не требует, чтобы вы поместили команду в ту же строку, что и в ответе Грегсета (иногда это то, что вам нужно, но иногда становится слишком трудно читать). *

Двойные скобки предназначены для математических выражений в zsh. (Например, см. здесь .)

...