| 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
 |