On Sun, Sep 17, 2017 at 6:24 PM, Mark Volkmann <r.mark.volkm...@gmail.com>
wrote:

> Is there a short list of fish commands that do not set the status variable?
>

I can't think of any that aren't syntactical keywords like `end`. There are
a handful which propagate the status of a command they preface (e.g.,
"builtin"). You should assume that every command sets $status.

Note that "and" and "or" are both commands that set $status and which are
also syntactical keywords. The exit status of the command that they preface
is propagated to $status. This means you cannot chain them like this:

command_A
and command_B
or command_C

That's because if "command_B" returns a non-zero status then "command_C"
will be run.

The "set" command is special in that it deliberately propagates the status
of any command substitution as its status. But will also set $status if
invoked with invalid arguments.

Others aren't technically commands just syntactical keywords: "and", "or",
"builtin", "command", "begin", "case", "end", "else", "if", "for",
"switch", "while", "continue", "break". The status of the commands that
follow them is visible for the keywords which take a command (e.g.,
"builtin"). However, even here there are exceptions such as for "if" and
"while". Those, like "continue", which are not followed by a command
obviously do not affect $status.

-- 
Kurtis Rader
Caretaker of the exceptional canines Junior and Hank
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Fish-users mailing list
Fish-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fish-users

Reply via email to