123456789101112131415161718192021222324252627282930313233 |
- # 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 ${+} ; echo moo' SHELL
- "$THIS_SH" -c 'echo ${:+} ; echo moo' SHELL
- # now some funky ones.
- # ${V+word} "if V unset, then substitute nothing, else substitute word"
- # ${V:+word} "if V unset or '', then substitute nothing, else substitute word"
- #
- # ${#:+} is a :+ op on $#, but ${#+} (and any other ${#c}) is "length of $c",
- # not + op on $#.
- # bash and dash do not accept ${#+}. it's possible for some shell to skip
- # the check that c is valid and interpret ${#+} as "len of $+". Not testing it.
- # echo _${#+}_
- echo _${#:+}_
- # Forms with non-empty word work as expected in both ash and bash.
- echo _${#+z}_ _${#:+z}_
- # 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}
|