increment & decrement error when variable is 0

2020-11-23 Thread Jetzer, Bill
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -march=x86-64 -mtune=generic -O2 -pipe 
-fstack-protector-strong -fno-plt 
-DDEFAULT_PATH_VALUE='/usr/local/sbin:/usr/local/bin:/usr/bin' 
-DSTANDARD_UTILS_PATH='/usr/bin' -DSYS_BASHRC='/etc/bash.bashrc' 
-DSYS_BASH_LOGOUT='/etc/bash.bash_logout' -DNON_INTERACTIVE_LOGIN_SHELLS 
-Wno-parentheses -Wno-format-security
uname output: Linux ThinkTank 5.9.8-2-MANJARO #1 SMP PREEMPT Wed Nov 18 
06:38:03 UTC 2020 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu

Bash Version: 5.0
Patch Level: 18
Release Status: release

Description:
The prefix and postfix versions of the increment (++) and 
decrement (--) operators return a non-zero exist status when the varable's 
value is zero.  This causes scripts to terminate if `set -e` is used in scripts 
(as in [bash strict 
mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/)).  See [this 
answer](https://stackoverflow.com/a/59775569/12859753) on Stack Overflow.

Repeat-By:
for ((i=-100; i<100; i++))
do
x=$i;
((--x)) || echo "err code $? on --x going from 
$i to $x";
x=$i;
((x--)) || echo "err code $? on x-- going from 
$i to $x";
x=$i;
((++x)) || echo "err code $? on ++x going from 
$i to $x";
x=$i;
((x++)) || echo "err code $? on x++ going from 
$i to $x";
done;

Results:
err code 1 on ++x going from -1 to 0
err code 1 on x-- going from 0 to -1
err code 1 on x++ going from 0 to 1
err code 1 on --x going from 1 to 0

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.


Re: increment & decrement error when variable is 0

2020-11-23 Thread Greg Wooledge
On Mon, Nov 23, 2020 at 07:36:29PM +, Jetzer, Bill wrote:
> The prefix and postfix versions of the increment (++) and 
> decrement (--) operators return a non-zero exist status when the varable's 
> value is zero.  This causes scripts to terminate if `set -e` is used

https://mywiki.wooledge.org/BashFAQ/105

Exercises 1 and 2 apply directly.  Everything else on the page applies
too, more broadly.  You may need to read it several times to start to
undo the damage you've already suffered.