IF(1) fish-shell IF(1)

# [NAME](#NAME)

if - conditionally execute a command

# [SYNOPSIS](#SYNOPSIS)

```
if CONDITION; COMMANDS_TRUE ...;
[else if CONDITION2; COMMANDS_TRUE2 ...;]
[else; COMMANDS_FALSE ...;]
end
```

# [DESCRIPTION](#DESCRIPTION)

**if** will execute the command **CONDITION**. If the condition's exit status is 0, the commands **COMMANDS\_TRUE** will execute. If the exit status is not 0 and else &lt;&gt; is given, **COMMANDS\_FALSE** will be executed.

You can use not &lt;&gt;, and &lt;&gt; or or &lt;&gt; in the condition. See the second example below.

The exit status of the last foreground command to exit can always be accessed using the $status &lt;#variables-status&gt; variable.

The **-h** or **--help** option displays help about using this command.

# [EXAMPLE](#EXAMPLE)

The following code will print **foo.txt exists** if the file foo.txt exists and is a regular file, otherwise it will print **bar.txt exists** if the file bar.txt exists and is a regular file, otherwise it will print **foo.txt and bar.txt do not exist**.

```
if test -f foo.txt


    echo foo.txt exists
else if test -f bar.txt


    echo bar.txt exists
else


    echo foo.txt and bar.txt do not exist
end
```

The following code will print "foo.txt exists and is readable" if foo.txt is a regular file and readable

```
if test -f foo.txt


   and test -r foo.txt


   echo "foo.txt exists and is readable"
end
```

# [SEE ALSO](#SEE_ALSO)

**if** is only as useful as the command used as the condition.

fish ships a few:

- test - perform tests on files and text &lt;&gt; can compare numbers, strings and check paths
- string - manipulate strings &lt;&gt; can perform string operations including wildcard and regular expression matches
- path - manipulate and check paths &lt;&gt; can check paths for permissions, existence or type
- contains - test if a word is present in a list &lt;&gt; can check if an element is in a list

# [Copyright](#Copyright)

fish-shell developers

October 15, 2026 4.9

---

Document: if(1) from fish 4.9.3-r3 (Chainguard OS)
Source: https://github.com/fish-shell/fish-shell
