1 # Demonstrations for users. Could go in docs.
2
3 #### Iterate over command sub output with split()
4 shopt -s ysh: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 write --end '' -- b'1 one\y002 two\y00' | read --all (&output)
51
52 #json8 write (split(output, b'\y00'))
53
54 for x in @[split(output, b'\y00')]; do
55 write -- $x
56 done
57
58 ## STDOUT:
59 1 one
60 2 two
61 ## END