Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Wall
uname output: Linux delphux 6.12.27+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian
6.12.27-1~bpo12+1 (2025-05-19) x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.2
Patch Level: 15
Release Status: release
Description:
The shorthands "++", "--", "+=1" and "-=1" in bash arithmetic
erroneously return exit code 1 when a variable is either incremented by
"++" or decremented by "--" from 0 or incremented by "+=1" or decremented
by "-=1" from -1 and 1 respectively, although the variable value changes
properly.
Repeat-By:
Runing the following line, demonstrates the "++" behaviour at 0:
A=-3; while [[ $A -le 3 ]]; do echo -ne "$A\t"; ((A++)); echo $?; done
-3 0
-2 0
-1 0
0 1
1 0
2 0
3 0
Runing the following line, demonstrates the "--" behaviour at 0:
A=3; while [[ $A -ge -3 ]]; do echo -ne "$A\t"; ((A--)); echo $?; done
3 0
2 0
1 0
0 1
-1 0
-2 0
-3 0
Runing the following line, demonstrates the "+=1" behaviour at -1:
A=-3; while [[ $A -le 3 ]]; do echo -ne "$A\t"; ((A+=1)); echo $?; done
-3 0
-2 0
-1 1
0 0
1 0
2 0
3 0
Runing the following line, demonstrates the "-=1" behaviour at 1:
A=3; while [[ $A -ge -3 ]]; do echo -ne "$A\t"; ((A-=1)); echo $?; done
3 0
2 0
1 1
0 0
-1 0
-2 0
-3 0
Sincerely,
Stamatis Mavrogeorgis