[git commit] shell: remove ${#+} tests, it is not a valid construct
Denys Vlasenko
vda.linux at googlemail.com
Tue Jul 25 22:30:02 UTC 2017
commit: https://git.busybox.net/busybox/commit/?id=b0648b0e7874e8551df64708532346a049ab7f2c
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
shell/ash_test/ash-vars/param_expand_alt.right | 2 +-
shell/ash_test/ash-vars/param_expand_alt.tests | 9 +++++++--
shell/hush_test/hush-vars/param_expand_alt.right | 2 +-
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}_
More information about the busybox-cvs
mailing list