101

In Bash/ZSH and other shells, I am used to using && and ||.

Is there any equivalent in Fish?

1

2 Answers 2

19

The logical operators you're used to, are supported since fish 3.0.0, released on 2018-12-28.

From the v3 release notes:

  • fish now supports && (like and), || (like or), and ! (like not), for better migration from POSIX-compliant shells (#4620).
136

Fish doesn't have a special syntax for a logical AND (&&) or a logical OR (||).

Instead, you can use the commands and and or, which verify the previous command's exit status and act accordingly:

command1
and command2
command1
or command2

Furthermore – just like in bash – you can use a semicolon ; to execute two commands one after the other:

command1 ; command2

This allows using a more familiar syntax:

command1 ;and command2
command1 ;or command2

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

7
  • 4
    There's an open github issue to add support for this syntax: && doesn't work · Issue #150 · fish-shell/fish-shell
    – aboy021
    Feb 26, 2016 at 0:41
  • 23
    This allows using a more familiar syntax: is very subjective Jun 2, 2016 at 10:46
  • 1
    ;and is less readable than && as the semicolon suggests a logically disjoint operation. It's visually jarring. Jul 30, 2017 at 20:08
  • @Elliott I agree, but Fish doesn't give you a choice.
    – Dennis
    Jul 30, 2017 at 20:11
  • 2
    do note though that in fish and bourne shells, AND and OR operators have the same order, unlike C based languages: unix.stackexchange.com/a/88851/50703
    – balupton
    Jan 11, 2018 at 8:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .