Comandos de cadena de pescado a través de `&&` o `||`

Respuestas:

13

Los operadores lógicos a los que está acostumbrado son compatibles desde fish 3.0.0, lanzado el 28/12/2018.

De las notas de la versión v3 :

  • fish ahora es compatible con &&(like and), ||(like or) y !(like not), para una mejor migración desde los shells compatibles con POSIX ( # 4620 ).
Dennis
fuente
132

Fish no tiene una sintaxis especial para un AND lógico ( &&) o un OR lógico ( ||).

En su lugar, puede usar los comandos andy or, que verifican el estado de salida del comando anterior y actúan en consecuencia:

command1
and command2
command1
or command2

Además, al igual que en bash, puede usar un punto y coma ;para ejecutar dos comandos uno tras otro:

command1 ; command2

Esto permite usar una sintaxis más familiar:

command1 ;and command2
command1 ;or command2

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

Dennis
fuente
44
Hay un problema de github abierto para agregar soporte para esta sintaxis: && no funciona · Problema # 150 · fish-shell / fish-shell
aboy021
20
This allows using a more familiar syntax:es muy subjetivo
Petr Peller
1
;andes menos legible que &&cuando el punto y coma sugiere una operación lógicamente disjunta. Es visualmente discordante.
Warlike Chimpanzee
@Elliott Estoy de acuerdo, pero Fish no te da una opción.
Dennis
1
Sin embargo, tenga en cuenta que en las conchas de pescado y bourne, los operadores AND y OR tienen el mismo orden, a diferencia de los lenguajes basados ​​en C: unix.stackexchange.com/a/88851/50703
balupton