084d796d16
case1.0 tests POSIX requirements and one more for keywords in case statements. The others test very special cases of command substitution. These also work on stable/8.
15 lines
534 B
Plaintext
15 lines
534 B
Plaintext
# $FreeBSD$
|
|
|
|
keywords='if then else elif fi while until for do done { } case esac ! in'
|
|
|
|
# Keywords can be used unquoted in case statements, except the keyword
|
|
# esac as the first pattern of a '|' alternation without a starting '('.
|
|
# (POSIX doesn't seem to require (esac) to work.)
|
|
for k in $keywords; do
|
|
eval "case $k in (foo|$k) ;; *) echo bad ;; esac"
|
|
eval "case $k in ($k) ;; *) echo bad ;; esac"
|
|
eval "case $k in foo|$k) ;; *) echo bad ;; esac"
|
|
[ "$k" = esac ] && continue
|
|
eval "case $k in $k) ;; *) echo bad ;; esac"
|
|
done
|