## EXIST Test for Existence

Section: Inspection Functions

### Usage

Tests for the existence of a variable, function, directory or file. The general syntax for its use is

      y = exist(item,kind)

where `item` is a string containing the name of the item to look for, and `kind` is a string indicating the type of the search. The `kind` must be one of

- `'builtin'` checks for built-in functions
- `'dir'` checks for directories
- `'file'` checks for files
- `'var'` checks for variables
- `'all'` checks all possibilities (same as leaving out `kind`)

You can also leave the `kind` specification out, in which case the calling syntax is

      y = exist(item)

The return code is one of the following:

- 0 - if `item` does not exist
- 1 - if `item` is a variable in the workspace
- 2 - if `item` is an M file on the search path, a full pathname to a file, or an ordinary file on your search path
- 5 - if `item` is a built-in FreeMat function
- 7 - if `item` is a directory

Note: previous to version `1.10`, `exist` used a different notion of existence for variables: a variable was said to exist if it was defined and non-empty. This test is now performed by `isset`.

### Example

Some examples of the `exist` function. Note that generally `exist` is used in functions to test for keywords. For example,

      function y = testfunc(a, b, c)
      if (~exist('c'))
        % c was not defined, so establish a default
        c = 13;
      end
      y = a + b + c;

An example of `exist` in action.

    --> a = randn(3,5,2)

    a =

    (:,:,1) =

        0.8887   -0.2749   -0.1202    0.2347    0.2815
       -0.9052    0.2688    1.9047   -0.0533   -1.6196
       -1.6519    0.1689    0.5134   -0.5795    0.7863

    (:,:,2) =

        0.8246   -0.5823   -0.6986    0.3591   -2.5987
       -0.5022    2.4368    1.2679   -1.4748   -0.4239
       -0.9966   -0.5530   -0.3325    2.2984    0.5024

    --> b = []

    b =
      []
    --> who
      Variable Name      Type   Flags             Size
                  a    double                    [3 5 2]
                  b    double                    [0 0]
    --> exist('a')

    ans =

     1

    --> exist('b')

    ans =

     1

    --> exist('c')

    ans =

     0

    -->
    quit