当前位置: 技术问答>linux和unix
小弟今天学到了if语句和case语句,写了个时间脚本,求精简!
来源: 互联网 发布时间:2017-01-28
本文导语: 用了一下午时间,写了个判断时间的脚本,脚本后面加时间 输出结果为下一天。 #!/bin/sh fileyear=`echo $1|cut -c 1-4` filemonth=`echo $1|cut -c 5-6` fileday=`echo $1|cut -c 7-8` case $filemonth in 01|03|05|07|08|10) if [ ${fileday} == "...
用了一下午时间,写了个判断时间的脚本,脚本后面加时间 输出结果为下一天。
#!/bin/sh
fileyear=`echo $1|cut -c 1-4`
filemonth=`echo $1|cut -c 5-6`
fileday=`echo $1|cut -c 7-8`
case $filemonth in
01|03|05|07|08|10)
if [ ${fileday} == "31" ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
04|06|09|11)
if [ ${fileday} == "30" ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
02)
if [ `expr $fileyear % 4` -eq 0 ]; then
if [ `expr $fileyear % 400` -eq 0 ];
then days=29
elif [ `expr $fileyear % 100` -eq 0 ];
then days=28
else days=29
fi
else
days=28
fi
if [ $days == $fileday ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
12) days=31
if [ $days == $fileday ];then
days=01
months=01
years=`expr $fileyear + 1`
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;# ./nextday.sh 20110228
2011301
# ./nextday.sh 20000228
20000229
# ./nextday.sh 20111231
20120101
# ./nextday.sh 20110228
2011301
# ./nextday.sh 20120229
2012301
# ./nextday.sh 20000229
2000301
# ./nextday.sh 21000228
2100301
esac
echo $nextday
特殊日子结果为:
#!/bin/sh
fileyear=`echo $1|cut -c 1-4`
filemonth=`echo $1|cut -c 5-6`
fileday=`echo $1|cut -c 7-8`
case $filemonth in
01|03|05|07|08|10)
if [ ${fileday} == "31" ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
04|06|09|11)
if [ ${fileday} == "30" ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
02)
if [ `expr $fileyear % 4` -eq 0 ]; then
if [ `expr $fileyear % 400` -eq 0 ];
then days=29
elif [ `expr $fileyear % 100` -eq 0 ];
then days=28
else days=29
fi
else
days=28
fi
if [ $days == $fileday ];then
days=01
months=`expr ${filemonth} + 1`
years=$fileyear
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;
12) days=31
if [ $days == $fileday ];then
days=01
months=01
years=`expr $fileyear + 1`
else
days=`expr ${fileday} + 1`
months=$filemonth
years=$fileyear
fi
nextday=${years}${months}$days
;;# ./nextday.sh 20110228
2011301
# ./nextday.sh 20000228
20000229
# ./nextday.sh 20111231
20120101
# ./nextday.sh 20110228
2011301
# ./nextday.sh 20120229
2012301
# ./nextday.sh 20000229
2000301
# ./nextday.sh 21000228
2100301
esac
echo $nextday
特殊日子结果为:
|
[[ ... ]] 这个是由bash版本决定的。和系统无关。 如果没有[[ ]]的话 用[ ]也行
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。