if - conditionally execute a command¶
Synopsis¶
if CONDITION; COMMANDS_TRUE ...;
[else if CONDITION2; COMMANDS_TRUE2 ...;]
[else; COMMANDS_FALSE ...;]
end
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 is given, COMMANDS_FALSE
will be executed.
You can use and or or 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 variable.
The -h or --help option displays help about using this command.
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¶
if
is only as useful as the command used as the condition.
Fish ships a few:
test - perform tests on files and text can compare numbers, strings and check paths
string - manipulate strings can perform string operations including wildcard and regular expression matches
path - manipulate and check paths can check paths for permissions, existence or type
contains - test if a word is present in a list can check if an element is in a list