Цепные команды Fish через `&&` или `||`


Ответы:


13

Логические операторы, к которым вы привыкли, поддерживаются начиная с fish 3.0.0, выпущенного 2018-12-28.

Из примечаний к выпуску v3 :

  • fish теперь поддерживает &&(like and), ||(like or) и !(like not) для лучшей миграции из POSIX-совместимых оболочек ( # 4620 ).

132

У Fish нет специального синтаксиса для логического И ( &&) или логического ИЛИ ( ||).

Вместо этого вы можете использовать команды andи or, которые проверяют состояние выхода предыдущей команды и действуют соответственно:

command1
and command2
command1
or command2

Кроме того, как и в bash, вы можете использовать точку ;с запятой для выполнения двух команд одна за другой:

command1 ; command2

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

command1 ;and command2
command1 ;or command2

См. Http://fishshell.com/docs/current/tutorial.html#tut_combiners


4
Существует открытая проблема github для добавления поддержки этого синтаксиса: && не работает · Проблема № 150 · fish-shell / fish-shell
aboy021

20
This allows using a more familiar syntax:очень субъективно
Петр Пеллер

1
;andменее читабелен, чем &&точка с запятой, которая предполагает логически непересекающуюся операцию. Это визуально сотрясает.
Воинственный шимпанзе

@ Эллиотт Я согласен, но Фиш не дает тебе выбора.
Деннис

1
Обратите внимание, что в оболочках рыбы и борна операторы AND и OR имеют одинаковый порядок, в отличие от языков на основе C: unix.stackexchange.com/a/88851/50703
balupton
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.