Mirror of git://git.busybox.net/busybox with our patches on top
Source
echo check that the unevaluated part of the ternary operator does not do evaluation or assignment
#ash# set +o posix
#ash# declare -i iv jv
echo "Format: 'expected actual'"
iv=$(( 3 + 5 * 32 ))
echo 163 $iv
#ash# iv=iv+3
#ash# echo 166 $iv
iv=2
jv=iv
: $((jv *= 2)) ##hush## let "jv *= 2"
echo 4 $jv
jv=$(( $jv << 2 ))
echo 16 $jv
: $((jv=$jv / 2)) ##hush## let jv="$jv / 2"
echo 8 $jv
#ash# jv="jv >> 2"
: $((jv=jv >> 2)) ##hush## let jv="jv >> 2"
echo 2 $jv
iv=$((iv+ $jv))
echo 4 $iv
echo 2 $((iv -= jv))
echo 2 $iv
echo 1 $(( iv == jv ))
echo 0 $(( iv != $jv ))
echo 0 $(( iv < jv ))
echo 0 $(( $iv > $jv ))
echo 1 $(( iv <= $jv ))
echo 1 $(( $iv >= jv ))
echo 2 $jv
echo -3 $(( ~$jv ))
echo -2 $(( ~1 ))
echo 1 $(( ! 0 ))
echo 0 $(( jv % 2 ))
echo 2 $(( $iv % 4 ))
echo 131072 $(( iv <<= 16 ))
echo 29 $(( iv %= 33 ))
echo 33 $(( 33 & 55 ))
echo 49 $(( 33 | 17 ))
echo 1 $(( iv && $jv ))
echo 1 $(( $iv || jv ))
echo 0 $(( iv && 0 ))
echo 0 $(( iv & 0 ))
echo 1 $(( iv && 1 ))
echo 1 $(( iv & 1 ))
echo 1 $(( $jv || 0 ))
echo 2 $(( jv | 0 ))
echo 3 $(( jv | 1 ))
echo 1 $(( $jv || 1 ))
: $((iv *= jv)) ##hush## let 'iv *= jv'
echo 58 $iv