• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux shell实现转换输入日期的格式

    对于用户输入日期的合法性检验,是个很重要的问题,这个例子是简单得取得用户输入的日期,并转换为相应的格式,但不完美,原因请看后文。

    #!/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 script
    
    if [ $# -ne 3 ] ; then
     echo "Usage: $0 month day year" >2
     echo "Typical input formats are August 3 1962 and 8 3 2002" >2
     exit 1
    fi
    
    if [ $3 -lt 99 ] ; then
     echo "$0: expected four-digit year value." >2; exit 1
    fi
    
    if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then
     monthnoToName $1
    else
     # 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:]')"
    fi
    
    echo $month $2 $3
    
    exit 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)这个脚本最大的缺陷是虽然将日期的格式转换了,但不能检测过滤不存在的日期。

    您可能感兴趣的文章:
    • PowerShell中使用Get-Date获取日期时间并格式化输出的例子
    • Shell脚本遍历一个日期范围实例
    • perl与shell获取昨天、明天或多天前的日期的代码
    • 获取两个日期间隔时间的shell脚本代码
    • PowerShell中iso8601格式日期和DateTime对象互转实例
    • 一个shell小案例(创建日期目录)
    • 判断输入的日期是否正确的shell脚本
    • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
    • 一个不错的shell 脚本教程 入门级
    • 利用shell获取指定日期前N天的日期
    上一篇:用来检测输入的选项$1是否在PATH中的shell脚本
    下一篇:自动化下载并检测ftp文件备份的shell脚本
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux shell实现转换输入日期的格式 linux,shell,实现,转换,输入,