设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
脚本 输入年、月、日计算星期[独创^_^]
返回列表
查看:
841
|
回复:
2
脚本 输入年、月、日计算星期[独创^_^]
[复制链接]
dunerunner
dunerunner
当前离线
积分
205
IP卡
狗仔卡
发表于 2006-2-22 15:36:38
|
显示全部楼层
|
阅读模式
#!/bin/bash
# week
#QQ:82386723 E-mail:sc_fan@163.com
value=year
error()
{
echo $value error! please input again.
continue
}
while
read -p "Please input $value: " tmp
do
if [ "$tmp" ]; then
if [ `echo $tmp | awk '{if($0~/[^0-9]/) print "1"}'` ]; then
echo $value error! please input again.
continue
fi
else
error
fi
case $value in
year)
value=month
year=$tmp
continue
;;
month)
if [ $tmp -gt 0 -a $tmp -le 12 ]; then
value=day
month=$tmp
continue
else
error
fi
;;
day)
case $month in
1|3|5|7|8|10|12)
if [ $tmp -gt 0 -a $tmp -le 31 ]; then
day=$tmp
break
else
error
fi
;;
4|6|9|11)
if [ $tmp -gt 0 -a $tmp -le 30 ]; then
day=$tmp
break
else
error
fi
;;
2)
case $[year%4] in
0)
if [ $tmp -gt 0 -a $tmp -le 29 ]; then
day=$tmp
break
else
echo $value error! $year is leap year, input again.
continue
fi
;;
*)
if [ $tmp -gt 0 -a $tmp -le 28 ]; then
day=$tmp
break
else
error
fi
;;
esac
;;
esac
;;
esac
done
century=$[year/100+1]
declare -i tmp=0
for (( i = 0; i < $[year%28]; i++))
do if [ $[i%4] = 0 ]; then
tmp=$[tmp+366]
else
tmp=$[tmp+365]
fi
done
for (( i = 1; i < $month; i++))
do case $i in
1|3|5|7|8|10|12)
tmp=$[tmp+31]
;;
4|6|9|11)
tmp=$[tmp+30]
;;
2)
if [ $[year%4] = 0 ]; then
tmp=$[tmp+29]
else
tmp=$[tmp+28]
fi
;;
esac
done
tmp=$[(tmp+day)%7]
week=(Thursday Friday Saturday Sunday Monday Tuesday Wednesday)
week=${week[tmp]}
echo -e "\nCentury $century $year.$month.$day $week\n"
复制代码
本人使用linux半年多了,水平不济可能有比较罗嗦的语句,望各位不要见笑,还请大家多多指教。
上面的脚本是我自己根据一些规律写出来的,加入了点判定,如果输入字母和符号等错误会提示,从公元0年以后的所有日期都可以算出星期,如果谁有这样的脚本希望帖出来,呵呵
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
寂寞烈火
寂寞烈火
当前离线
积分
533
IP卡
狗仔卡
发表于 2006-2-23 13:10:33
|
显示全部楼层
支持原窗!!!
BTW: linux下的date和cal这俩实用工具都可以
回复
支持
反对
使用道具
举报
显身卡
dunerunner
dunerunner
当前离线
积分
205
IP卡
狗仔卡
楼主
|
发表于 2006-2-23 14:19:23
|
显示全部楼层
呵呵,我的脚本再加上几句话公元前、后的都可以算了
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表