Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: darwin14.5.0
Compiler: clang
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64'
-DCONF_OSTYPE='darwin14.5.0' -DCONF_MACHTYPE='x86_64-apple-darwin14.5.0'
-DCONF_VENDOR='apple' -DLOCALEDIR='/usr/local/Cellar/bash/4.3.42/share/locale'
-DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -DMACOSX -I. -I. -I./include
-I./lib -I./lib/intl -I/private/tmp/bash20150826-30526-beo5d/bash-4.3/lib/intl
-DSSH_SOURCE_BASHRC
uname output: Darwin 192.168.1.17 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul
29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
Machine Type: x86_64-apple-darwin14.5.0
Bash Version: 4.3
Patch Level: 42
Release Status: release
Description:
Parameter names are recursively evaluated in an arithmetic expression, but this
is not done consistently.
Repeat-By:
foo=bar
bar=5
echo $(( foo )) # produces 5
echo $(( foo++ )) # produces 5
echo $foo # produces 6, not bar
echo $bar # produces 5, not 6
Fix:
It's not clear what should be fixed. First of all, it's not clear what foo
is actually evaluating to. If it evaluates to bar, then bar should be
incremented. If it evaluates to 5, then the autoincrement should be a syntax
error.
It seems like the "correct" behavior would be for a parameter to be evaluated
until its value is a parameter name whose value is an actual integer, such that
foo=bar
bar=baz
baz=5
echo $(( foo++ )) # produces 5; result should be baz=6 and foo, bar
unchanged.