1 # Demonstrations for users. Could go in docs.
2
3 #### Iterate over command sub output with split()
4 shopt -s oil:upgrade
5
6 output=$(echo '1 one'; echo '2 two')
7
8 for x in @[split(output)]; do
9 write -- $x
10 done
11
12 echo ___
13
14 # Now change IFS. split() is affected.
15 IFS=$'\n'
16 for x in @[split(output)]; do
17 write -- $x
18 done
19
20 ## STDOUT:
21 1
22 one
23 2
24 two
25 ___
26 1 one
27 2 two
28 ## END
29
30 #### split with explicit IFS argument
31 shopt -s ysh:upgrade
32
33 # demonstrate that -- is not special to 'write'
34 output=$(echo '1 one'; echo --; echo '2 two')
35
36 # TODO: accept named arg IFS=
37 for x in @[split(output, $'\n')]; do
38 write -- $x
39 done
40
41 ## STDOUT:
42 1 one
43 --
44 2 two
45 ## END
46
47 #### split on \0 delimiters
48 shopt -s ysh:upgrade
49
50 output=$(echo $'1 one\x002 two\x00')
51
52 for x in @[split(output, $'\0')]; do
53 write -- $x
54 done
55
56 ## STDOUT:
57 1 one
58 2 two
59 ## END