diff options
-rw-r--r-- | shell/ash_test/ash-vars/param_expand_alt.right | 2 | ||||
-rwxr-xr-x | shell/ash_test/ash-vars/param_expand_alt.tests | 9 | ||||
-rw-r--r-- | shell/hush_test/hush-vars/param_expand_alt.right | 2 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/param_expand_alt.tests | 9 |
4 files changed, 16 insertions, 6 deletions
diff --git a/shell/ash_test/ash-vars/param_expand_alt.right b/shell/ash_test/ash-vars/param_expand_alt.right index c733c14..1303f80 100644 --- a/shell/ash_test/ash-vars/param_expand_alt.right +++ b/shell/ash_test/ash-vars/param_expand_alt.right @@ -1,6 +1,6 @@ SHELL: line 1: syntax error: bad substitution SHELL: line 1: syntax error: bad substitution -_0_ __ +__ _z_ _z_ _ _ _ _ _ _aaaa _ _ _word _word diff --git a/shell/ash_test/ash-vars/param_expand_alt.tests b/shell/ash_test/ash-vars/param_expand_alt.tests index d804524..23e9a26 100755 --- a/shell/ash_test/ash-vars/param_expand_alt.tests +++ b/shell/ash_test/ash-vars/param_expand_alt.tests @@ -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}_ diff --git a/shell/hush_test/hush-vars/param_expand_alt.right b/shell/hush_test/hush-vars/param_expand_alt.right index 4f9eb29..c46786e 100644 --- a/shell/hush_test/hush-vars/param_expand_alt.right +++ b/shell/hush_test/hush-vars/param_expand_alt.right @@ -1,6 +1,6 @@ hush: syntax error: unterminated ${name} hush: syntax error: unterminated ${name} -__ __ +__ _z_ _z_ _ _ _ _ _ _aaaa _ _ _word _word diff --git a/shell/hush_test/hush-vars/param_expand_alt.tests b/shell/hush_test/hush-vars/param_expand_alt.tests index d804524..23e9a26 100755 --- a/shell/hush_test/hush-vars/param_expand_alt.tests +++ b/shell/hush_test/hush-vars/param_expand_alt.tests @@ -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}_ |