1 | # spec/ysh-func
|
2 |
|
3 | ## our_shell: ysh
|
4 |
|
5 | #### shSplit() respects IFS
|
6 |
|
7 | var s = ' aa a bb b '
|
8 |
|
9 | argv.py @[shSplit(s)]
|
10 |
|
11 | setvar IFS = 'a'
|
12 |
|
13 | argv.py @[shSplit(s)]
|
14 |
|
15 | setvar IFS = 'b'
|
16 |
|
17 | argv.py @[shSplit(s)]
|
18 |
|
19 | ## STDOUT:
|
20 | ['aa', 'a', 'bb', 'b']
|
21 | [' ', '', ' ', ' bb b ']
|
22 | [' aa a ', '', ' ', ' ']
|
23 | ## END
|
24 |
|
25 |
|
26 | #### getVar() gets global or local vars
|
27 |
|
28 | # compare with shvarGet(), which does dynamic scope
|
29 |
|
30 | proc my-proc {
|
31 | var mylocal = 43
|
32 |
|
33 | echo g=$[getVar('g')]
|
34 | echo mylocal=$[getVar('mylocal')]
|
35 |
|
36 | # the whole purpose is dynamic variable names / dynamic binding
|
37 | var prefix = 'my'
|
38 | echo mylocal=$[getVar(prefix ++ 'local')]
|
39 |
|
40 | echo not_global_or_local=$[getVar('not_global_or_local')]
|
41 | }
|
42 |
|
43 | proc main {
|
44 | var not_global_or_local = 42
|
45 | my-proc
|
46 | }
|
47 |
|
48 | var g = 'global'
|
49 |
|
50 | main
|
51 |
|
52 | ## STDOUT:
|
53 | g=global
|
54 | mylocal=43
|
55 | mylocal=43
|
56 | not_global_or_local=null
|
57 | ## END
|