aboutsummaryrefslogtreecommitdiff
path: root/shell/ash_test/ash-vars/param_expand_alt.tests
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-07-25 14:55:05 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-07-25 14:55:05 +0200
commit64925384c9cf5e0d986e183577da286bb3207ce7 (patch)
tree47688edcf2c0d987800968a9e9d85fc2cd0741e5 /shell/ash_test/ash-vars/param_expand_alt.tests
parent73c47f6c41c97fb452b4747088543f2c2166830a (diff)
downloadbusybox-64925384c9cf5e0d986e183577da286bb3207ce7.tar.gz
ash: add a few tests from hush-vars/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash_test/ash-vars/param_expand_alt.tests')
-rwxr-xr-xshell/ash_test/ash-vars/param_expand_alt.tests28
1 files changed, 28 insertions, 0 deletions
diff --git a/shell/ash_test/ash-vars/param_expand_alt.tests b/shell/ash_test/ash-vars/param_expand_alt.tests
new file mode 100755
index 000000000..c9c4249af
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_expand_alt.tests
@@ -0,0 +1,28 @@
+# 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"
+# bash doesn't accept ${#+}. ash prints 0 (not $#).
+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}