# first try some invalid patterns (do in subshell due to parsing error) "$THIS_SH" -c 'echo ${+} ; echo moo' "$THIS_SH" -c 'echo ${:+} ; echo moo' # now some funky ones. (bash doesn't accept ${#+}) echo _${#+}_ _${#:+}_ # now some valid ones set -- echo _$1 _${1+} _${1:+} _${1+word} _${1:+word} set -- aaaa echo _$1 _${1+} _${1:+} _${1+word} _${1:+word} unset f echo _$f _${f+} _${f:+} _${f+word} _${f:+word} f= echo _$f _${f+} _${f:+} _${f+word} _${f:+word} f=fff echo _$f _${f+} _${f:+} _${f+word} _${f:+word}