1 # TEST - basic declaration and assignment
19 # TEST - compount assignment and variable attributes
20 declare -A wheat chaff
21 wheat=( [zero]=0 [one]=a [two]=b [three]=c )
24 chaff=( [zero]=1+4 [one]=3+7 four )
26 declare -A waste=( [pid]=42134 [version]=4.0-devel [source]=$0 [lineno]=$LINENO )
32 chaff[hello world]=flip
38 chaff=( [one]=a [*]=12 )
40 # TEST - key expansion -- no word splitting
41 chaff[hello world]=flip
43 echo ${chaff[hello world]}
45 chaff[box]="multiple words"
58 chaff=( [one]=a [*]=12 )
60 # TEST - keys and values containing spaces
63 wheat=([six]=6 [foo bar]="qux qix" )
68 declare -A wheat=([six]=6 [foo bar]="qux qix" )
70 recho ${wheat[foo bar]}
71 recho "${wheat[foo bar]}"
75 # TEST - basic expansions: number of elements and value length
78 wheat=([six]=6 [foo bar]="qux qix" )
82 recho ${#wheat[foo bar]}
84 # TEST - appending assignment operator
87 wheat=([six]=6 [foo bar]="qux qix" )
89 wheat[foo bar]+=' blat'
91 recho ${wheat[foo bar]}
92 recho "${wheat[foo bar]}"
97 wheat=([six]=6 [foo bar]=flix )
101 recho ${wheat[foo bar]}
102 recho "${wheat[foo bar]}"
105 # TEST - index expansion: no word splitting or globbing
109 wheat=([s*]=6 [foo bar]=flix )
115 # TEST -- associative array keys expansion
119 wheat=([six]=6 [foo bar]=flix )
124 # TEST -- associative array pattern removal
128 xpath=( [0]=/bin [one]=/bin [two]=/usr/bin [three]=/usr/ucb [four]=/usr/local/bin)
129 xpath+=( [five]=/sbin [six]=/usr/sbin [seven]=. )
136 echo ${xpath[@]%%[!/]*}
137 echo ${xpath[0]%%[!/]*}
139 recho ${xpath%%[!/]*}
140 recho ${xpath[five]##*/}
141 recho ${xpath[five]%%[!/]*}
147 echo ${xpath[*]%%[!/]*}
149 # TEST -- associative array pattern substitution
153 xpath=( [0]=/bin [one]=/bin [two]=/usr/bin [three]=/usr/ucb [four]=/usr/local/bin)
154 xpath+=( [five]=/sbin [six]=/usr/sbin [seven]=. )
157 # default element is "0" (as a string)
158 echo ${#xpath} -- ${xpath["0"]}
160 echo ${xpath[@]//\//^}
161 echo "${xpath[@]//\//^}" | cat -v
163 zecho "${xpath[@]/\//\\}"
164 zecho "${xpath[@]//\//\\}"
165 zecho "${xpath[@]//[\/]/\\}"
167 ${THIS_SH} ./assoc1.sub
169 ${THIS_SH} ./assoc2.sub
171 ${THIS_SH} ./assoc3.sub
173 ${THIS_SH} ./assoc4.sub