1 ## oils_failures_allowed: 3
2 ## compare_shells: bash mksh
3
4 # TODO: compare with AT&T ksh - it has this feature
5
6 #### K and V are variables in (( array[K] = V ))
7 K=5
8 V=42
9 typeset -a array
10 (( array[K] = V ))
11
12 echo array[5]=${array[5]}
13 echo keys = ${!array[@]}
14 echo values = ${array[@]}
15 ## STDOUT:
16 array[5]=42
17 keys = 5
18 values = 42
19 ## END
20
21 #### test -v with strings
22 test -v str
23 echo str=$?
24
25 str=x
26
27 test -v str
28 echo str=$?
29
30 ## STDOUT:
31 str=1
32 str=0
33 ## END
34 ## BUG mksh STDOUT:
35 str=2
36 str=2
37 ## END
38
39 #### test -v with arrays
40
41 typeset -a a
42
43 test -v a
44 echo a=$?
45 test -v 'a[0]'
46 echo "a[0]=$?"
47 echo
48
49 a[0]=1
50
51 test -v a
52 echo a=$?
53 test -v 'a[0]'
54 echo "a[0]=$?"
55 echo
56
57 test -v 'a[1]'
58 echo "a[1]=$?"
59
60 # stupid rule about undefined 'x'
61 test -v 'a[x]'
62 echo "a[x]=$?"
63 echo
64
65 ## STDOUT:
66 a=1
67 a[0]=1
68
69 a=0
70 a[0]=0
71
72 a[1]=1
73 a[x]=0
74
75 ## END
76
77 ## BUG mksh STDOUT:
78 a=2
79 a[0]=2
80
81 a=2
82 a[0]=2
83
84 a[1]=2
85 a[x]=2
86
87 ## END
88
89 #### test -v with assoc arrays
90
91 typeset -A A
92
93 test -v A
94 echo A=$?
95 test -v 'A[0]'
96 echo "A[0]=$?"
97 echo
98
99 A['0']=x
100
101 test -v A
102 echo A=$?
103 test -v 'A[0]'
104 echo "A[0]=$?"
105 echo
106
107 test -v 'A[1]'
108 echo "A[1]=$?"
109
110 # stupid rule about undefined 'x'
111 test -v 'A[x]'
112 echo "A[x]=$?"
113 echo
114
115 ## STDOUT:
116 A=1
117 A[0]=1
118
119 A=0
120 A[0]=0
121
122 A[1]=1
123 A[x]=1
124
125 ## END
126
127 ## N-I ksh STDOUT:
128 A=1
129 A[0]=1
130
131 A=1
132 A[0]=1
133
134 A[1]=1
135 A[x]=1
136
137 ## END
138
139 ## BUG mksh STDOUT:
140 A=2
141 A[0]=2
142
143 A=2
144 A[0]=2
145
146 A[1]=2
147 A[x]=2
148
149 ## END