shell: remove ${#+} tests, it is not a valid construct

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2017-07-26 00:30:02 +02:00
parent 2093ad296f
commit b0648b0e78
4 changed files with 16 additions and 6 deletions

View File

@ -1,6 +1,6 @@
SHELL: line 1: syntax error: bad substitution
SHELL: line 1: syntax error: bad substitution
_0_ __
__
_z_ _z_
_ _ _ _ _
_aaaa _ _ _word _word

View File

@ -6,8 +6,13 @@
# 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"
# bash doesn't accept ${#+}. ash prints 0 (not $#): "len of $+"
echo _${#+}_ _${#:+}_
#
# ${#:+} 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}_

View File

@ -1,6 +1,6 @@
hush: syntax error: unterminated ${name}
hush: syntax error: unterminated ${name}
__ __
__
_z_ _z_
_ _ _ _ _
_aaaa _ _ _word _word

View File

@ -6,8 +6,13 @@
# 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"
# bash doesn't accept ${#+}. ash prints 0 (not $#): "len of $+"
echo _${#+}_ _${#:+}_
#
# ${#:+} 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}_