2019-03-31 17:05:09 +08:00
.. _cmd-contains:
2018-12-17 09:39:33 +08:00
contains - test if a word is present in a list
2019-01-03 12:10:47 +08:00
==============================================
2018-12-17 09:39:33 +08:00
2018-12-18 09:58:24 +08:00
Synopsis
--------
2018-12-17 05:08:41 +08:00
contains [OPTIONS] KEY [VALUES...]
2018-12-18 09:58:24 +08:00
2018-12-17 05:08:41 +08:00
2018-12-19 10:44:30 +08:00
Description
2019-01-03 12:10:47 +08:00
-----------
2018-12-17 05:08:41 +08:00
2018-12-20 04:02:45 +08:00
`` contains `` tests whether the set `` VALUES `` contains the string `` KEY `` . If so, `` contains `` exits with status 0; if not, it exits with status 1.
2018-12-17 05:08:41 +08:00
The following options are available:
2018-12-20 04:02:45 +08:00
- `` -i `` or `` --index `` print the word index
2018-12-17 05:08:41 +08:00
2018-12-20 04:02:45 +08:00
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.
2018-12-17 05:08:41 +08:00
2018-12-19 10:44:30 +08:00
Example
2019-01-03 12:10:47 +08:00
-------
2018-12-17 05:08:41 +08:00
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
2018-12-17 05:08:41 +08:00
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
2018-12-17 05:08:41 +08:00
end
2018-12-19 11:14:04 +08:00
2018-12-17 05:08:41 +08:00
2018-12-20 04:02:45 +08:00
While this will check if `` hasargs `` was run with the `` -q `` option:
2018-12-17 05:08:41 +08:00
2018-12-19 11:14:04 +08:00
::
function hasargs
if contains -- -q $argv
echo '$argv contains a -q option'
end
2018-12-17 05:08:41 +08:00
end
2018-12-19 11:14:04 +08:00
2018-12-17 05:08:41 +08:00
2018-12-20 04:02:45 +08:00
The `` -- `` here stops `` contains `` from treating `` -q `` to an option to itself. Instead it treats it as a normal string to check.