См. http://fishshell.com/docs/current/commands.html#if и http://fishshell.com/docs/current/tutorial.html#tut_conditionals.
рыбы, если структура выглядит следующим образом:
if COMMAND
# do something if it succeeded
else
# do something if it failed ($status != 0)
end
Тогда есть также not
, and
и or
команды, которые вы можете использовать как
if not COMMAND1; or COMMAND2
# and so on
Если вы действительно хотите проверить переменную (например, $ status), вам необходимо использовать команду test
, такую как
if test $status -eq 0
Помните, что после каждой команды изменяется статус $, поэтому, если вам нужно использовать статус более ранней команды (обычно в подсказках), вам нужно сделать то, что сказал Йоахим Пилеборг, сохраните ее в другой переменной.
Кроме того, test
имеет некоторые проблемы с кавычками (потому что это одна из немногих частей рыбы придерживаться POSIX) - если в test $foo -eq 0
$ Foo неопределен, тест выдаст ошибку, и если это не определено в test -n $foo
, в тест будет правдой (поскольку POSIX требует, чтобы тест с одним аргументом был истинным).
Как заметка на полях, в рыбьем версиях до 2.3.0, вам нужно добавить begin
и end
вокруг состояния с and
или or
, потому что это было истолковано причудливо.
Таким образом, вы должны были бы сделать
если начать COMMAND; или COMMAND2; конец # сделать что-то для состояния = 0
Возможный дубликат [Как получить статус предыдущей команды в скрипке рыбы] (http://stackoverflow.com/questions/34721446/how-to-get-the-status-of-previous-command-in-fish-script) – faho
Не дублировать. Вопрос заключается не в том, как получить статус, а в том, как лучше всего отправить код, основанный на статусе. – pitosalas