脚本那里出错了?
发表于 : 2009-12-11 16:39
我实在没看出来 ,请高手帮忙 脚本如下:
#! /usr/bin/ksh
# script:dateval.sh
IFS="/"
n="[0-9][0-9]"
set -A month_arr 0 31 29 31 30 31 30 31 31 30 31 30 31
while echo "enter a date: " ; do
read value
case "$value" in
"") echo "no date entered" ; continue ;;
$n$n$n) set $value
let rem="$3 % 4"
if [ $2 -gt 12 -o $2 -eq 0 ] ; then
echo "illegal month" ; continue
else
case "$value" in
29/02/??) [ $rem -gt 0 ] &&
{ echo "20$3 is not a leap year" ; continue ; } ;;
*) [ $1 -gt ${month_arr[$2]} -o $1 -eq 0 ] &&
{ echo "illegal day " ; continiue ; } ;;
esac
fi;;
*) echo "invalid date" ; continue ;;
esac
echo "$1/$2/$3" is a valid date
done
可以运行 但是结果不正确:
stone@ubuntu:~$ chmod +x dateval.sh;./dateval.sh
enter a date:
11/11/11
invalid date
enter a date:
01/01/01
invalid date
enter a date:
no date entered
enter a date:
#! /usr/bin/ksh
# script:dateval.sh
IFS="/"
n="[0-9][0-9]"
set -A month_arr 0 31 29 31 30 31 30 31 31 30 31 30 31
while echo "enter a date: " ; do
read value
case "$value" in
"") echo "no date entered" ; continue ;;
$n$n$n) set $value
let rem="$3 % 4"
if [ $2 -gt 12 -o $2 -eq 0 ] ; then
echo "illegal month" ; continue
else
case "$value" in
29/02/??) [ $rem -gt 0 ] &&
{ echo "20$3 is not a leap year" ; continue ; } ;;
*) [ $1 -gt ${month_arr[$2]} -o $1 -eq 0 ] &&
{ echo "illegal day " ; continiue ; } ;;
esac
fi;;
*) echo "invalid date" ; continue ;;
esac
echo "$1/$2/$3" is a valid date
done
可以运行 但是结果不正确:
stone@ubuntu:~$ chmod +x dateval.sh;./dateval.sh
enter a date:
11/11/11
invalid date
enter a date:
01/01/01
invalid date
enter a date:
no date entered
enter a date: