Machine: x86_64 OS: linux-gnu Compiler: gcc Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/bash-2bxm7h/bash-5.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wno-parentheses -Wno-format-sec$ uname output: Linux t1 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.0 Patch Level: 3 Release Status: release Description: It looks as if a bad substitution detected inside a case of if continues the script flow immediately after the conditional statement skipping the remaining statements inside the conditional. Please take a look into section "Repeat-By:". I detected this when running a script containing "${OPTARG@Q}" with a bash 4.1.5 where @Q is not yet supported - the script continued to run in a bad manner so this bug might cause real troubles... Repeat-By: schulte@t1:~$ cat bad_substitutions_breaks_conditional #!/bin/bash x=y case $x in y) echo "x has value ${x@q} - stop now!" exit 1;; esac echo "running" if [[ $x == y ]]; then echo "x has value ${x@q} - stop now!" exit 1 fi echo "still running" echo "x has value ${x@q} - stop now!" exit 1 echo "and running" schulte@t1:~$ ./bad_substitutions_breaks_conditional ./bad_substitutions_breaks_conditional: line 6: x has value ${x@q} - stop now!: bad substitution running ./bad_substitutions_breaks_conditional: line 11: x has value ${x@q} - stop now!: bad substitution still running ./bad_substitutions_breaks_conditional: line 15: x has value ${x@q} - stop now!: bad substitution