2022年8月11日(木) 9:01 Steffen Nurpmeso <stef...@sdaoden.eu>: > #?0|kent:tmp$ /x/src/busybox.git/busybox sh xxx.sh > <6><0><6><I2+=1> > <1><1><5><I2+=1>
It seems your busybox interprets« I1=0?I1:I3 » as « (I1=0)?I1:I3 », but this violates POSIX XCU 2.6.4 and XCU 1.1.2. Also, the above behavior doesn't seem to be reproduced by recent versions of busybox. I have tried 1.23.2, 1.35.0, and 1.36.0 (master 7c2a3bd), but all produce the following result: <6><6><6><I2+=1> <10><10><6><I2+=1> Which version of busybox do you use? $ busybox | head -1 The behavior of recent versions of busybox is still broken. The third number in the second line is 6, which implies that busybox evaluates the discarded branch of the conditional operator (i.e., expr3 of true?expr2:expr3). This doesn't happen in any other shells that support the recursive arithmetic evaluation. I tried bash, ksh93, mksh, zsh, posh, and osh, but all produced the same result as bash while yash, ash, and dash do not support the recursive arithmetic evaluation. > I think the busybox variant is correct. I think both your version and recent versions of busybox sh are broken. -- Koichi