sh: Add limited test for ${#@} and ${#*}.

POSIX leaves the result of expanding ${#@} and ${#*} unspecified, but ensure
it is numeric.
This commit is contained in:
jilles 2015-12-06 14:09:31 +00:00
parent 070b607d88
commit bfe5e9c164
2 changed files with 19 additions and 0 deletions

View File

@ -21,6 +21,7 @@ FILES+= positional5.0
FILES+= positional6.0
FILES+= positional7.0
FILES+= positional8.0
FILES+= positional9.0
FILES+= pwd1.0
FILES+= pwd2.0

View File

@ -0,0 +1,18 @@
# $FreeBSD$
# Although POSIX leaves the result of expanding ${#@} and ${#*} unspecified,
# make sure it is at least numeric.
set -- bb cc ddd
set -f
lengths=${#*}${#@}"${#*}${#@}"$(echo ${#*}${#@}"${#*}${#@}")
IFS=
lengths=$lengths${#*}${#@}"${#*}${#@}"$(echo ${#*}${#@}"${#*}${#@}")
case $lengths in
*[!0-9]*)
printf 'bad: %s\n' "$lengths"
exit 3 ;;
????????????????*) ;;
*)
printf 'too short: %s\n' "$lengths"
exit 3 ;;
esac