fish-shell/doc_src/cmds/contains.rst

63 lines
1.3 KiB
ReStructuredText
Raw Normal View History

.. _cmd-contains:
contains - test if a word is present in a list
==============================================
Synopsis
--------
``contains`` [**options**] *KEY* [*VALUE* ...]
Description
-----------
``contains`` tests whether the set ``VALUES`` contains the string ``KEY``. If so, ``contains`` exits with status 0; if not, it exits with status 1.
The following options are available:
- ``-i`` or ``--index`` print the word index
Note that, like GNU tools and most of fish's builtins, ``contains`` interprets all arguments starting with a ``-`` as options to contains, until it reaches an argument that is ``--`` (two dashes). See the examples below.
Example
-------
If $animals is a list of animals, the following will test if it contains a cat:
2018-12-19 11:14:04 +08:00
::
if contains cat $animals
echo Your animal list is evil!
end
This code will add some directories to $PATH if they aren't yet included:
2018-12-19 11:14:04 +08:00
::
for i in ~/bin /usr/local/bin
if not contains $i $PATH
set PATH $PATH $i
end
end
2018-12-19 11:14:04 +08:00
While this will check if ``hasargs`` was run with the ``-q`` option:
2018-12-19 11:14:04 +08:00
::
function hasargs
if contains -- -q $argv
echo '$argv contains a -q option'
end
end
2018-12-19 11:14:04 +08:00
The ``--`` here stops ``contains`` from treating ``-q`` to an option to itself. Instead it treats it as a normal string to check.