脚本那里出错了?

sh/bash/dash/ksh/zsh等Shell脚本
回复
123shiyonghong
帖子: 14
注册时间: 2009-09-30 21:08

脚本那里出错了?

#1

帖子 123shiyonghong » 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:
123shiyonghong
帖子: 14
注册时间: 2009-09-30 21:08

Re: 脚本那里出错了?

#2

帖子 123shiyonghong » 2009-12-11 16:52

脚本的功能 :
验证用户输入的是否是有效的日期,并考虑了闰年的因素(没有包括被400整除的年份)
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: 脚本那里出错了?

#3

帖子 xzap » 2009-12-11 19:59

糟了,这个脚本我完全看不懂阿,帮顶,等高手出现吧
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 脚本那里出错了?

#4

帖子 cnkilior » 2009-12-11 21:27

下次贴代码用

代码: 全选

[/color]标签

代码: 全选

set -A month_arr 0 31 29 31 30 31 30 31 31 30 31 30 31
这一句有问题。
你不觉得么?

代码: 全选

set -A month_arr 0/31/29/31/30/31/30/31/31/30/31/30/31
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: 脚本那里出错了?

#5

帖子 poet » 2009-12-11 21:44

你确认你用的是 ubuntu ?

如果用 ubntu 的话为什么要用 ksh 脚本呢?
回复