łańcuch poleceń Fish za pomocą `&&` lub `||`

94

W Bash / ZSH i innych powłokach jestem przyzwyczajony do używania &&i ||.

Czy istnieje jakikolwiek odpowiednik w Fish?

Albert
źródło
Ta składnia jest teraz obsługiwana w gałęzi master i zostanie wydana w Fish 3.0 ( github.com/fish-shell/fish-shell/commit/… )
Chimpanzee

Odpowiedzi:

13

Operatory logiczne, do których jesteś przyzwyczajony, są obsługiwane od wersji 3.0.0 wydanej 28.12.2018.

Z informacji o wersji v3 :

  • fish obsługuje teraz &&(like and), ||(like or) i !(like not), dla lepszej migracji z powłok zgodnych z POSIX ( # 4620 ).
Dennis
źródło
132

Fish nie ma specjalnej składni dla logicznego AND ( &&) lub logicznego OR ( ||).

Zamiast tego możesz użyć poleceń andi or, które weryfikują status wyjścia poprzedniego polecenia i działają odpowiednio:

command1
and command2
command1
or command2

Ponadto - podobnie jak w bash - możesz użyć średnika ;do wykonania dwóch poleceń jedna po drugiej:

command1 ; command2

Pozwala to na użycie bardziej znanej składni:

command1 ;and command2
command1 ;or command2

Zobacz http://fishshell.com/docs/current/tutorial.html#tut_combiners

Dennis
źródło
4
Istnieje otwarty problem github, aby dodać obsługę tej składni: && nie działa · Problem # 150 · fish-shell / fish-shell
aboy021
20
This allows using a more familiar syntax:jest bardzo subiektywny
Petr Peller
1
;andjest mniej czytelny niż &&jako, że średnik sugeruje logicznie rozłączną operację. To wizualnie denerwujące.
Warlike Chimpanzee
@Elliott Zgadzam się, ale Fish nie daje ci wyboru.
Dennis
1
zauważ jednak, że w skorupkach ryb i bourne operatory AND i OR mają tę samą kolejność, w przeciwieństwie do języków opartych na C: unix.stackexchange.com/a/88851/50703
balupton