Thank you for the clarification. I understand now. --bill
From: Ilkka Virta <itvi...@gmail.com> Sent: Tuesday, November 24, 2020 2:08 AM To: Jetzer, Bill <jetz...@svaconsulting.com> Cc: bug-bash@gnu.org Subject: Re: increment & decrement error when variable is 0 On Tue, Nov 24, 2020 at 12:07 AM Jetzer, Bill <jetz...@svaconsulting.com<mailto:jetz...@svaconsulting.com>> wrote: ((--x)) || echo "err code $? on --x going from $i to $x"; err code 1 on ++x going from -1 to 0 That's not about --x, but of the ((...)) construct: "" (( expression )) The arithmetic expression is evaluated according to the rules described below (see Shell Arithmetic). If the value of the expression is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to let "expression" See Bash Builtins, for a full description of the let builtin."" https://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs Note the second sentence and try e.g.: $ if (( 100-100 )); then echo true; else echo false; fi false That also matches how truth values work in e.g. C, where you could write if (foo) { ... } to test if foo is nonzero. Also, consider the return values of the comparison operators. The behaviour here makes it possible to implement them by just returning a number, instead of having to deal with a distinct boolean type that would affect the exit status: $ (( a = 0 < 1 )); echo $a 1 > err code 1 on x++ going from 0 to 1 As to why you get this here, when going to one instead of zero, remember the post-increment returns the original value. CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. CONFIDENTIAL : This transmission may contain information that is privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon)is strictly prohibited. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format.