003#规范日期格式

输入要求:
  1. 月份为英文名称或1至12的数字表示,如 January 或 1
  2. 年份由4位数组成,如 2020

格式化为:
  3个字母的月份名称(第一个字符大写)、天数及4位数的年份组成

#!/bin/bash
#

numMonth(){
  # 将月份规范成3个字母,首字母大写
  case $1 in
    1)mon="Jan" ;;
    2)mon="Feb" ;;
    3)mon="Mar" ;;
    4)mon="Apr" ;;
    5)mon="May" ;;
    6)mon="Jun" ;;
    7)mon="Jul" ;;
    8)mon="Aug" ;;
    9)mon="Sep" ;;
    10)mon="Oct" ;;
    11)mon="Nor" ;;
    12)mon="Dec" ;;
    *) echo "$0: Unknown month value $1" >&2
       exit 1
  esac
  return 0
}

# 验证输入
if [ $# -ne 3 ]; then
  echo "Usage: $0 month day year" >&2
  exit 1
fi

expr $2 + 0 &>/dev/null

if [ $? -ne 0 ]; then
  echo "$0: days must be digit in [1-31]." >&2
  exit 1
fi

if [ $2 -lt 1 ]||[ $2 -gt 31 ]; then
  echo "$0: days must be in [1-31]." >&2
  exit 1
fi

if [ $3 -le 1000 ] || [ $3 -gt 9999 ]; then
  echo "$0: expected 4-digit year value." >&2
  exit 1
fi

if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then
  numMonth $1
else
  mon="$(echo ${1%${1#?}} |tr [a-z] [A-Z])"
  # cut -c 1 截取第1个字符
  # tr '[:upper:] [:lower:]' 大写转小写
  mon="$mon$(echo $1| cut -c 2-3| tr [A-Z] [a-z])"
  # cut -c 2-3 截取第2至3个字符
fi

echo $mon $2 $3

exit 0

 

posted @ 2020-05-21 08:29  bigtree2pingping  阅读(295)  评论(0编辑  收藏  举报