72 echo $(( iv += (jv + 9)))
73 echo $(( (iv + 4) % 7 ))
79 # conditional expressions
80 echo $(( 4<5 ? 1 : 32))
81 echo $(( 4>5 ? 1 : 32))
82 echo $(( 4>(2+3) ? 1 : 32))
83 echo $(( 4<(2+3) ? 1 : 32))
84 echo $(( (2+2)<(2+3) ? 1 : 32))
85 echo $(( (2+2)>(2+3) ? 1 : 32))
87 # check that the unevaluated part of the ternary operator does not do
88 # evaluation or assignment
92 echo $((1 ? 20 : (x+=2)))
94 echo $((0 ? (y+=2) : 30))
100 echo $((1 ? 20 : (x+=2)))
102 echo $((0 ? (y+=2) : 30))
105 # check precedence of assignment vs. conditional operator
110 # check precedence of assignment vs. conditional operator
112 echo $((0 ? x+=2 : 20))
114 # associativity of assignment-operator operator
115 declare -i i=1 j=2 k=3
116 echo $((i += j += k))
120 echo $(( 0x100 | 007 ))
145 # missing number after base
148 # these should generate errors
153 echo $(( jv += \$iv ))
154 let 'rv = 7 + (43 * 6'
161 ((echo abc; echo def;); echo ghi)
163 if (((4+4) + (4 + 7))); then
167 (()) # make sure the null expression works OK
170 echo $(( a[1] + a[2] ))
171 echo $(( (a[1] + a[2]) == a[3] ))
172 (( (a[1] + a[2]) == a[3] )) ; echo $?
174 # test pushing and popping the expression stack
177 echo $(( ( 4 + A ) + 4 ))
179 echo $(( ( 4 + A ) + 4 ))
181 # badly-formed conditional expressions
186 # precedence and short-circuit evaluation
190 echo $(( 0 && B=42 ))
193 echo $(( 1 || B=88 ))
196 echo $(( 0 && (B=42) ))
199 echo $(( (${$} - $$) && (B=42) ))
202 echo $(( 1 || (B=88) ))
205 # until command with (( )) command
224 # {pre,post}-{inc,dec}rement and associated errors
274 echo $(( 8#$(printf "%o\n" $n) ))
276 echo $(( 16#$(printf "%x\n" $n) ))
277 echo $(( 16#$(printf "%X\n" $n) ))