# First try some invalid patterns. Do in subshell due to parsing error. # (set argv0 to "SHELL" to avoid "/path/to/shell: blah" in error messages) "$THIS_SH" -c 'echo ${=}' SHELL "$THIS_SH" -c 'echo ${:=}' SHELL # now some funky ones "$THIS_SH" -c 'echo ${#=}' SHELL "$THIS_SH" -c 'echo ${#:=}' SHELL # should error out "$THIS_SH" -c 'set --; echo _${1=}' SHELL "$THIS_SH" -c 'set --; echo _${1:=}' SHELL "$THIS_SH" -c 'set --; echo _${1=word}' SHELL "$THIS_SH" -c 'set --; echo _${1:=word}' SHELL # should not error "$THIS_SH" -c 'set aa; echo _${1=}' SHELL "$THIS_SH" -c 'set aa; echo _${1:=}' SHELL "$THIS_SH" -c 'set aa; echo _${1=word}' SHELL "$THIS_SH" -c 'set aa; echo _${1:=word}' SHELL # should work fine unset f; echo _$f unset f; echo _${f=} unset f; echo _${f:=} unset f; echo _${f=word} unset f; echo _${f:=word} f=; echo _$f f=; echo _${f=} f=; echo _${f:=} f=; echo _${f=word} f=; echo _${f:=word} f=fff; echo _$f f=fff; echo _${f=} f=fff; echo _${f:=} f=fff; echo _${f=word} f=fff; echo _${f:=word}