# # test the shell globbing # expect() { echo expect "$@" } TESTDIR=/tmp/glob-test rm -rf $TESTDIR mkdir $TESTDIR builtin cd $TESTDIR touch a b c d abc abd abe bb bcd ca cb dd de mkdir bdir # see if `regular' globbing works right expect ' ' recho a* X* expect ' ' recho \a* # see if null glob expansion works allow_null_glob_expansion= expect ' ' recho a* X* unset allow_null_glob_expansion # see if the code that expands directories only works expect '' recho b*/ # Test quoted and unquoted globbing characters expect '<*>' recho \* expect '' recho 'a*' expect '' recho a\* expect ' <*q*>' recho c* a\* *q* expect '<**>' recho "*"* expect '<**>' recho \** expect '<\.\./*/>' recho "\.\./*/" expect '' recho 's/\..*//' # Pattern from Larry Wall's Configure that caused bash to blow up expect '' recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" # Make sure character classes work properly expect ' ' recho [a-c]b* expect '
' recho [a-y]*[^c] expect ' ' recho a*[^c] touch a-b aXb expect ' ' recho a[X-]b touch .x .y expect '
' recho [^a-c]* # Make sure that filenames with embedded globbing characters are handled # properly mkdir a\*b > a\*b/ooo expect '' recho a\*b/* expect '' recho a\*?/* expect '' cmd='echo !7' case "$cmd" in *\\!*) echo match ;; *) echo no match ;; esac expect '' file='r.*' case $file in *.\*) echo not there ;; *) echo there ;; esac # examples from the Posix.2 spec (d11.2, p. 243) expect '' recho a[b]c expect '' recho a["b"]c expect '' recho a[\b]c expect '' recho a?c expect '' case abc in a"b"c) echo match ;; *) echo BAD ;; esac expect '' case abc in a*c) echo match ;; *) echo BAD ;; esac expect '' case abc in "a?c") echo bad ;; *) echo ok ;; esac expect '' case abc in a\*c) echo bad ;; *) echo ok ;; esac expect '' case abc in a\[b]c) echo bad ;; *) echo ok ;; esac expect '' case "$nosuchvar" in "") echo ok ;; *) echo bad ;; esac # This is very odd, but sh and ksh seem to agree expect '' case abc in a["\b"]c) echo ok ;; *) echo bad ;; esac builtin cd / rm -rf $TESTDIR exit 0