Comandos da cadeia de peixes via `&&` ou `||`

90

Em Bash / ZSH e outras shells, estou acostumado a usar && e ||.

Existe algum equivalente em Fish?

Albert
fonte
Esta sintaxe agora é suportada no branch master e será lançada no Fish 3.0 ( github.com/fish-shell/fish-shell/commit/… )
Clever Little Monkey

Respostas:

8

Os operadores lógicos que você está acostumado, são suportados desde o peixe 3.0.0, lançado em 2018-12-28.

De notas de lançamento da v3 :

  • peixe agora suporta && (gostar and ) || (gostar or ) e ! (gostar not ), para melhor migração de shells compatíveis com POSIX ( # 4620 ).
Dennis
fonte
127

Fish não tem uma sintaxe especial para um AND lógico ( && ) ou um OR lógico ( || ).

Em vez disso, você pode usar os comandos and e or, que verifica o status de saída do comando anterior e age de acordo:

command1
and command2
command1
or command2

Além disso - assim como no bash - você pode usar um ponto-e-vírgula ; para executar dois comandos, um após o outro:

command1 ; command2

Isso permite usar uma sintaxe mais familiar:

command1 ;and command2
command1 ;or command2

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

Dennis
fonte
4
Há um problema no github aberto para adicionar suporte a esta sintaxe: & amp; & amp; não funciona · Edição # 150 · fish-shell / fish-shell
aboy021
20
This allows using a more familiar syntax: é muito subjetivo
Petr Peller
1
;and é menos legível do que && como o ponto-e-vírgula sugere uma operação logicamente separada. É visualmente chocante.
Clever Little Monkey
@Elliott Eu concordo, mas Fish não lhe dá uma escolha.
Dennis
1
note que em shells de peixe e bourne, os operadores AND e OR têm a mesma ordem, ao contrário das linguagens baseadas em C: unix.stackexchange.com/a/88851/50703
balupton