> On Sep 17, 2017, at 9:53 PM, Kurtis Rader <kra...@skepticism.us> wrote:
>
>> 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:
Thanks for the detailed reply Kurtis! In the previous sentence, did you mean to
say "can" instead of "cannot"?
> 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