Hello, $ bash -c 'for ((i = 0; $(echo 0); i++)); do echo x; done'
(OK) $ bash -c 'for ((i = 0; ${x-`echo 0`}; i++)); do echo x; done' (OK) $ bash -c 'for ((i = 0; ${x-$(echo 0)}; i++)); do echo x; done' bash: -c: line 0: syntax error near unexpected token `newline' bash: -c: line 0: `for ((i = 0; ${x-$(echo 0)}; i++)); do echo x; done' It's the same for ${x#$(echo 0)}. I also noticed that cmd was not run in ${x#`cmd`} if x happens to be empty (it's also the case in dash and ksh93 though only if x is unset; zsh, mksh and yash are fine) $ bash --version GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu) -- Stephane