OILS / spec / ysh-func-builtin.test.sh View on Github | oilshell.org

57 lines, 27 significant
1# spec/ysh-func
2
3## our_shell: ysh
4
5#### shSplit() respects IFS
6
7var s = ' aa a bb b '
8
9argv.py @[shSplit(s)]
10
11setvar IFS = 'a'
12
13argv.py @[shSplit(s)]
14
15setvar IFS = 'b'
16
17argv.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
30proc 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
43proc main {
44 var not_global_or_local = 42
45 my-proc
46}
47
48var g = 'global'
49
50main
51
52## STDOUT:
53g=global
54mylocal=43
55mylocal=43
56not_global_or_local=null
57## END