Imported from ../bash-3.1.tar.gz.
[platform/upstream/bash.git] / tests / exp-tests
index d45b702..884b5a6 100644 (file)
@@ -163,14 +163,24 @@ expect '<^A^A^B>'
 recho '\ 1\ 1\ 2'
 
 # More tests of "$@"
-expect '<  abc> <def> <ghi> <jkl  >'
 set abc def ghi jkl
+expect '<  abc> <def> <ghi> <jkl  >'
 recho "  $@  "
+expect '<  abc> <def> <ghi> <jkl  >'
+recho "${1+  $@  }"
 
-expect '<--abc> <def> <ghi> <jkl-->'
 set abc def ghi jkl
+expect '<--abc> <def> <ghi> <jkl-->'
 recho "--$@--"
 
+set "a b" cd ef gh
+expect '<a b> <cd> <ef> <gh>'
+recho ${1+"$@"}
+expect '<a b> <cd> <ef> <gh>'
+recho ${foo:-"$@"}
+expect '<a b> <cd> <ef> <gh>'
+recho "${@}"
+
 expect '<  >'
 recho "  "
 expect '< - >'
@@ -222,6 +232,19 @@ x=/one/two/three
 expect '<three>'
 recho ${x##*/}
 
+# pattern removal of patterns that don't match
+z=abcdef
+
+expect '<abcdef>'
+recho ${z#xyz}
+expect '<abcdef>'
+recho ${z##xyz}
+
+expect '<abcdef>'
+recho ${z%xyz}
+expect '<abcdef>'
+recho ${z%%xyz}
+
 # Command substitution and the quirky differences between `` and $()
 
 expect '<\$x>'
@@ -308,8 +331,25 @@ esac
 set one two three four five
 expect '<one> <three> <five>'
 recho $1 $3 ${5} $8 ${9}
+
+# length tests on positional parameters and some special parameters
+
 expect '<5> <5>'
 recho $# ${#}
+expect '<3>'
+recho ${#1}
+expect '<1>'
+recho ${##}
+expect '<1>'
+recho ${#?}
+expect '<5>'
+recho ${#@}
+expect '<5>'
+recho ${#*}
+expect '<5>'
+recho "${#@}"
+expect '<5>'
+recho "${#*}"
 
 expect '<42>'
 recho $((28 + 14))
@@ -324,3 +364,17 @@ recho '~'
 
 expect nothing
 recho $!
+expect nothing
+recho ${!}
+
+# test word splitting of assignment statements not preceding a command
+a="a b c d e"
+declare b=$a
+expect '<a> <b> <c> <d> <e>'
+recho $b
+
+a="a?b?c"
+
+echo ${a//\\?/ }
+
+echo ${a//\?/ }