File: for.rst

package info (click to toggle)
fish 4.2.1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 35,980 kB
  • sloc: python: 6,972; javascript: 1,407; sh: 1,009; xml: 411; ansic: 230; objc: 78; makefile: 20
file content (48 lines) | stat: -rw-r--r-- 1,621 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
for - perform a set of commands multiple times
==============================================

Synopsis
--------

.. synopsis::

    for VARNAME in [VALUES ...]; COMMANDS ...; end

Description
-----------

**for** is a loop construct. It will perform the commands specified by *COMMANDS* multiple times. On each iteration, the local variable specified by *VARNAME* is assigned a new value from *VALUES*. If *VALUES* is empty, *COMMANDS* will not be executed at all. The *VARNAME* is visible when the loop terminates and will contain the last value assigned to it. If *VARNAME* does not already exist it will be set in the local scope. For our purposes if the **for** block is inside a function there must be a local variable with the same name. If the **for** block is not nested inside a function then global and universal variables of the same name will be used if they exist.

Much like :doc:`set <set>`, **for** does not modify $status, but the evaluation of its subordinate commands can.

The **-h** or **--help** option displays help about using this command.

Example
-------

::

    for i in foo bar baz; echo $i; end
    
    # would output:
    foo
    bar
    baz


Notes
-----

The ``VARNAME`` was local to the for block in releases prior to 3.0.0. This means that if you did something like this:

::

    for var in a b c
        if break_from_loop
            break
        end
    end
    echo $var


The last value assigned to ``var`` when the loop terminated would not be available outside the loop. What ``echo $var`` would write depended on what it was set to before the loop was run. Likely nothing.