2006-11-01 01:23:16 +10:00
|
|
|
\section if if - conditionally execute a command
|
2005-09-20 23:31:55 +10:00
|
|
|
|
|
|
|
|
\subsection if-synopsis Synopsis
|
2014-08-01 03:37:32 +01:00
|
|
|
\fish{syn}
|
|
|
|
|
if CONDITION; COMMANDS_TRUE...; [else if CONDITION2; COMMANDS_TRUE2...;] [else; COMMANDS_FALSE...;] end
|
|
|
|
|
\endfish
|
2005-09-20 23:31:55 +10:00
|
|
|
|
|
|
|
|
\subsection if-description Description
|
2006-11-02 23:47:25 +10:00
|
|
|
|
2014-08-01 03:37:32 +01: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
|
2010-09-18 10:18:26 +08:00
|
|
|
be executed.
|
2006-11-11 20:52:08 +10:00
|
|
|
|
2007-08-02 03:35:24 +10:00
|
|
|
In order to use the exit status of multiple commands as the condition
|
2014-08-01 03:37:32 +01:00
|
|
|
of an if block, use <a href="#begin">`begin; ...; end`</a> and
|
|
|
|
|
the short circuit commands <a href="commands.html#and">`and`</a>
|
|
|
|
|
and <a href="commands.html#or">`or`</a>.
|
2005-09-20 23:31:55 +10:00
|
|
|
|
2006-11-02 23:47:25 +10: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 23:31:55 +10:00
|
|
|
\subsection if-example Example
|
|
|
|
|
|
2014-08-01 03:37:32 +01:00
|
|
|
\fish
|
2005-09-20 23:31:55 +10:00
|
|
|
if test -f foo.txt
|
2014-08-01 03:37:32 +01:00
|
|
|
echo foo.txt exists
|
2012-09-03 13:24:01 -07:00
|
|
|
else if test -f bar.txt
|
2014-08-01 03:37:32 +01:00
|
|
|
echo bar.txt exists
|
2005-09-20 23:31:55 +10:00
|
|
|
else
|
2014-08-01 03:37:32 +01:00
|
|
|
echo foo.txt and bar.txt do not exist
|
2005-09-20 23:31:55 +10:00
|
|
|
end
|
2014-08-01 03:37:32 +01:00
|
|
|
\endfish
|
|
|
|
|
|
|
|
|
|
will print `foo.txt exists` if the file foo.txt
|
2010-09-18 10:18:26 +08:00
|
|
|
exists and is a regular file, otherwise it will print
|
2014-08-01 03:37:32 +01:00
|
|
|
`bar.txt exists` if the file bar.txt exists
|
2012-09-01 02:14:13 -07:00
|
|
|
and is a regular file, otherwise it will print
|
2014-08-01 03:37:32 +01:00
|
|
|
`foo.txt and bar.txt do not exist`.
|