【需求】
用shell腳本判斷輸入的日期是否合法。就是判斷日期是否是真實(shí)的日期,比如20170110就是合法日期,20171332就不合法。假定年份不超過(guò)4位。
【分析】
判斷日期是否合法,使用cal命令即可,cal命令用法:
1)cal什么都不加,打印全年的日歷
cal
2)cal后面帶一個(gè)參數(shù),只能是帶年份
cal 2022
這里的2022為年份,數(shù)值最小值為1,最大為999999999。
3)cal后面帶兩個(gè)參數(shù),第一個(gè)為月份,第二個(gè)為年份
cal 10 2022
如果帶兩個(gè)參數(shù)時(shí),第一個(gè)參數(shù)范圍為1-12
4)cal后面帶三個(gè)參數(shù),第一個(gè)為日期,第二個(gè)為月份,第三個(gè)為年份
cal 10 10 2022
第一個(gè)數(shù)值范圍1-31
有了以上cal命令的用法總結(jié),接下來(lái)就是要把提供的日期劃分成三部分:日期、月份、年份。
截取字符串,可以使用${an2},例如
a=12345
echo${a3}##表示,截取字符串從第一位開(kāi)始,截取3位
123
【參考答案】
#!/bin/bash
if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
then
echo "Usage: bash $0 yyyymmdd"
exit 1
fi
datem=$1
year=${datem4}
month=${datem2}
day=${datem2}
if echo $day|grep -q '^0'
then
day=`echo $day |sed 's/^0//'`
fi
if cal $day $month $year >/dev/null 2>/dev/null
then
echo ok
else
echo "Error: Please input a wright date."
exit 1
fi
審核編輯:湯梓紅
-
Shell
+關(guān)注
關(guān)注
1文章
375瀏覽量
25375 -
腳本
+關(guān)注
關(guān)注
1文章
409瀏覽量
29193
原文標(biāo)題:寫(xiě)一個(gè)腳本判斷日期是否合法
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一個(gè)判斷操作系統(tǒng)的VBScript腳本代碼
工作中這種檢測(cè)腳本太常見(jiàn)了
給你一篇部署文檔,你能不能寫(xiě)一個(gè)腳本出來(lái)
stm32 IAP例程跳轉(zhuǎn)到APP區(qū)時(shí)為什么都會(huì)檢查棧頂?shù)刂?b class='flag-5'>是否合法呢
C語(yǔ)言教程之判斷一個(gè)數(shù)是否存在數(shù)組中
stm32 BootLoader之檢查棧頂?shù)刂?b class='flag-5'>是否合法
寫(xiě)一個(gè)自動(dòng)化重啟服務(wù)腳本
來(lái)練習(xí)一個(gè)寫(xiě)Redis部署的腳本
監(jiān)控你的站點(diǎn)訪問(wèn)是否正常
兩個(gè)網(wǎng)絡(luò)IP地址是否在同一個(gè)段中的判斷方法
如何判斷一個(gè)軟啟動(dòng)器是否故障
寫(xiě)一個(gè)腳本判斷日期是否合法
評(píng)論