国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

linux shell實現轉換輸入日期的格式

2020-07-27 19:01:28
字體:
來源:轉載
供稿:網友

對于用戶輸入日期的合法性檢驗,是個很重要的問題,這個例子是簡單得取得用戶輸入的日期,并轉換為相應的格式,但不完美,原因請看后文。

#!/bin/sh# normdate -- Normalizes month field in date specification# to three letters, first letter capitalized. A helper# function for Script #7, valid-date. Exits w/ zero if no error.monthnoToName(){ # Sets the variable 'month' to the appropriate value case $1 in  1 ) month="Jan"  ;; 2 ) month="Feb"  ;;  3 ) month="Mar"  ;; 4 ) month="Apr"  ;;  5 ) month="May"  ;; 6 ) month="Jun"  ;;  7 ) month="Jul"  ;; 8 ) month="Aug"  ;;  9 ) month="Sep"  ;; 10) month="Oct"  ;;  11) month="Nov"  ;; 12) month="Dec"  ;;  * ) echo "$0: Unknown numeric month value $1" >&2; exit 1  esac  return 0}## Begin main scriptif [ $# -ne 3 ] ; then echo "Usage: $0 month day year" >&2 echo "Typical input formats are August 3 1962 and 8 3 2002" >&2 exit 1fiif [ $3 -lt 99 ] ; then echo "$0: expected four-digit year value." >&2; exit 1fiif [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then monthnoToName $1else # Normalize to first three letters, first upper, rest lowercase month="$(echo $1|cut -c1|tr '[:lower:]' '[:upper:]')" month="$month$(echo $1|cut -c2-3 | tr '[:upper:]' '[:lower:]')"fiecho $month $2 $3exit 0

腳本分析:
1) 定義了函數monthnoToName(),用來轉換用戶輸入的數字月份
2)首先判斷參數的個數是否為3個,其次判斷年份,接著是轉換月份格式。
3)if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; 這句話有點意思,是如果$1被執行sed替換的話,即$1中存在數字
則執行函數monthnoToName(),來轉換數字月份。
4)month="$(echo $1|cut -c1|tr '[:lower:]' '[:upper:]')"
month="$month$(echo $1|cut -c2-3 | tr '[:upper:]' '[:lower:]')"
將輸入的字符月份轉換為標準格式。
5)這個腳本最大的缺陷是雖然將日期的格式轉換了,但不能檢測過濾不存在的日期。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌江| 邵武市| 庆元县| 承德市| 宜都市| 沂水县| 灌阳县| 莆田市| 南开区| 尼勒克县| 轮台县| 永新县| 玛多县| 龙井市| 永昌县| 安新县| 海城市| 永安市| 积石山| 博乐市| 肥城市| 龙海市| 榆树市| 沙田区| 都昌县| 吉林省| 登封市| 洛浦县| 石泉县| 桦甸市| 敦化市| 屯昌县| 阿瓦提县| 双牌县| 衡山县| 资溪县| 三穗县| 石台县| 那坡县| 扎兰屯市| 奉节县|