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

來源:互聯網
上載者:User

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

#!/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)這個指令碼最大的缺陷是雖然將日期的格式轉換了,但不能檢測過濾不存在的日期。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.