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