commandes en chaîne de poisson via `&&` ou `||`

94

Dans Bash / ZSH et d’autres coquillages, j’ai l’habitude d’utiliser &&et ||.

Y a-t-il un équivalent dans le poisson?

Albert
la source
Cette syntaxe est maintenant prise en charge sur la branche master et sera publiée dans Fish 3.0 ( github.com/fish-shell/fish-shell/commit/… )
Warlike Chimpanzee

Réponses:

13

Les opérateurs logiques auxquels vous êtes habitué sont pris en charge depuis fish 3.0.0, publié le 2018-12-28.

À partir des notes de publication de la v3 :

  • les poissons prennent désormais en charge &&(comme and), ||(comme or) et !(comme not) pour une meilleure migration des coquilles compatibles POSIX ( n ° 4620 ).
Dennis
la source
132

Fish n'a pas de syntaxe spéciale pour un ET logique ( &&) ou un OU logique ( ||).

À la place, vous pouvez utiliser les commandes andet orqui vérifient l’état de sortie de la commande précédente et agissent en conséquence:

command1
and command2
command1
or command2

De plus, comme dans bash, vous pouvez utiliser un point-virgule ;pour exécuter deux commandes l'une après l'autre:

command1 ; command2

Cela permet d'utiliser une syntaxe plus familière:

command1 ;and command2
command1 ;or command2

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

Dennis
la source
4
Il y a un problème ouvert dans github qui ajoute un support pour cette syntaxe: && ne fonctionne pas · Issue # 150 · fish-shell / fish-shell
aboy021
20
This allows using a more familiar syntax:est très subjectif
Petr Peller
1
;andest moins lisible que &&le point-virgule suggère une opération logiquement disjointe. C'est discordant visuellement.
Chipanzé guerrier
@ Elliott Je suis d'accord, mais le poisson ne vous donne pas le choix.
Dennis
1
Prenez note cependant que dans des coquilles de poissons et bourne, ET et OU ont le même ordre, à la différence des langues à base C: unix.stackexchange.com/a/88851/50703
balupton