mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-14 00:01:16 -03:00
This is a potential bikeshed project but if fish is being used as a proper noun, it should either be capitalised all the time or none of the time, and the latter looks better.
62 lines
1.8 KiB
ReStructuredText
62 lines
1.8 KiB
ReStructuredText
if - conditionally execute a command
|
|
====================================
|
|
|
|
Synopsis
|
|
--------
|
|
|
|
.. 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 :doc:`else <else>` is given, ``COMMANDS_FALSE`` will be executed.
|
|
|
|
You can use :doc:`not <not>`, :doc:`and <and>` or :doc:`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 :ref:`$status <variables-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:
|
|
|
|
- :doc:`test` can compare numbers, strings and check paths
|
|
- :doc:`string` can perform string operations including wildcard and regular expression matches
|
|
- :doc:`path` can check paths for permissions, existence or type
|
|
- :doc:`contains` can check if an element is in a list
|