2006-10-31 15:23:16 +00:00
\section if if - conditionally execute a command
2005-09-20 13:31:55 +00:00
\subsection if-synopsis Synopsis
2014-08-01 12:25:41 +00:00
\fish{synopsis}
2014-08-08 02:44:37 +00:00
if CONDITION; COMMANDS_TRUE...;
[else if CONDITION2; COMMANDS_TRUE2...;]
[else; COMMANDS_FALSE...;]
end
2014-08-01 02:37:32 +00:00
\endfish
2005-09-20 13:31:55 +00:00
\subsection if-description Description
2006-11-02 13:47:25 +00:00
2014-08-19 12:41:23 +00:00
`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.
2006-11-11 10:52:08 +00:00
2016-05-24 23:22:44 +00:00
You can use <a href="#and">`and`</a> or <a href="#or">`or`</a> in the condition. See the second example below.
2014-08-19 12:41:23 +00:00
The exit status of the last foreground command to exit can always be accessed using the <a href="index.html#variables-status">$status</a> variable.
2005-09-20 13:31:55 +00:00
\subsection if-example Example
2014-08-19 12:41:23 +00:00
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`.
2014-08-01 02:37:32 +00:00
\fish
2005-09-20 13:31:55 +00:00
if test -f foo.txt
2014-08-01 02:37:32 +00:00
echo foo.txt exists
2012-09-03 20:24:01 +00:00
else if test -f bar.txt
2014-08-01 02:37:32 +00:00
echo bar.txt exists
2005-09-20 13:31:55 +00:00
else
2014-08-01 02:37:32 +00:00
echo foo.txt and bar.txt do not exist
2005-09-20 13:31:55 +00:00
end
2014-08-01 02:37:32 +00:00
\endfish
2015-08-12 12:24:40 +00:00
The following code will print "foo.txt exists and is readable" if foo.txt is a regular file and readable
\fish
2016-05-19 20:00:40 +00:00
if test -f foo.txt
and test -r foo.txt
2015-08-12 12:24:40 +00:00
echo "foo.txt exists and is readable"
end
\endfish