busybox/shell/ash_test/ash-arith/arith-precedence1.tests
Denys Vlasenko 8acbf31708 shell/math: document ternary ?: op's weirdness, add code comments
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 00:41:18 +02:00

15 lines
547 B
Text
Executable file

exec 2>&1
# bash documentation says that precedence order is:
# ...
# expr ? expr1 : expr2
# = *= /= %= += -= <<= >>= &= ^= |=
# exprA , exprB
# but in practice, the rules for expr1 and expr2 are different:
# assignments and commas in expr1 have higher precedence than :?,
# but in expr2 they haven't:
# "v ? 1,2 : 3,4" is parsed as "(v ? (1,2) : 3),4"
# "v ? a=2 : b=4" is parsed as "(v ? (a=1) : b)=4" (thus, this is a syntax error)
echo 4:$((0 ? 1,2 : 3,4))
echo 4:$((1 ? 1,2 : 3,4))
echo 4:"$((0 ? 1,2 : 3,4))"
echo 4:"$((1 ? 1,2 : 3,4))"