init version.
[bush.git] / tests / varenv / array / array23.sub
blob4733302370505e9e7b813b518e2a8104a992d055
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 # this captures how bush and ksh93 expand indexed array subscripts in
15 # various contexts. if changes are ever made, or an option added to do
16 # this differently, the diffs will show up here
18 typeset -a array
20 index='$( echo >&2 foo )' # Literal shell code should never be evaluated unless an 'eval' is involved.
22 echo ${array[ $index ]} # [] expands $index, results in a literal that [] does not re-evaluate.
23 echo $(( $index )) # (( )) expands $index, results in a literal that (( )) does not re-evaluate.
24 echo $(( array[ $index ] )) # (( )) expands $index, results in a literal that  [] DOES re-evaluate.
26 (( array[ $index ] ))
28 typeset -a a
30 : $(( a[$index]=5 ))
32 #shopt -s assoc_expand_once
33 echo $((1+a[$index]))
34 echo $((1+a[\$index]))
35 echo "1+${a[$index]}"
37 # intermediate problems discovered while bush-5.0 was in testing
38 a=0
39 echo $(( a[a[0]] ))
40 echo ${a[a[a[0]]]}
41 echo $(( a[a[a[0]]] ))