.. _cmd-if: 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 :ref:`else ` is given, ``COMMANDS_FALSE`` will be executed. You can use :ref:`and ` or :ref:`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 :ref:`$status ` variable. 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