zoukankan      html  css  js  c++  java
  • 标准输出的思考

    test3.sh

    bacth_date=$1
    echo "bacth_date:$1"
    echo "std_out:$?"
    echo "${bacth_date}"|grep "20[0-9][0-9][0-9][0-9][0-9][0-9]"
    echo "std_out:$?"
    if [ $? -ne 0 ]
    then
        echo "[ `date +'%Y-%M-%d'` ]" "[ERROR]" "BATCH_DATE:${bacth_date} is invalid date format ."
       echo "1"
       exit 1
    fi
    [centos@s202 ~]$ sh test3.sh 20191001
    bacth_date:20191001
    std_out:0
    20191001
    std_out:0

    [centos@s202 ~]$ sh test3.sh 2019xxxx bacth_date:2019xxxx std_out:0 std_out:1

    为什么第二次标准输出 1 之后 就不往下运行了

    if [ $? -ne 0 ]

    why?

    我们继续研究:我们在第二个echo "std_out:$?"再加一个echo "std_out:$?" 去看标准输出$?变成了什么
    bacth_date=$1
    echo "bacth_date:$1"
    echo "std_out:$?"
    echo "${bacth_date}"|grep "20[0-9][0-9][0-9][0-9][0-9][0-9]"
    echo "std_out:$?"
    echo "std_out:$?"
    if [ $? -ne 0 ]
    then
        echo "[ `date +'%Y-%M-%d'` ]" "[ERROR]" "BATCH_DATE:${bacth_date} is invalid date format ."
       echo "1"
       exit 1
    fi
    [centos@s202 ~]$ sh test3.sh 2019xxxx
    bacth_date:2019xxxx
    std_out:0
    std_out:1
    std_out:0

    结论: 运行第二个echo "std_out:$?" 又把标准输出 $?重新置值成了 0

    所以 if [ $? -ne 0 ] 不成立 就不运行下面的了

     get :echo命令的标准输出是 0

    bacth_date=$1
    echo "bacth_date:$1"
    echo "std_out:$?"
    echo "${bacth_date}"|grep "20[0-9][0-9][0-9][0-9][0-9][0-9]"
    if [ $? -ne 0 ]
    then
        echo "[ `date +'%Y-%M-%d'` ]" "[ERROR]" "BATCH_DATE:${bacth_date} is invalid date format ."
       echo "1"
       exit 1
    fi
    [centos@s202 ~]$ sh test3.sh 2019xxxx
    bacth_date:2019xxxx
    std_out:0
    [ 2019-12-23 ] [ERROR] BATCH_DATE:2019xxxx is invalid date format .
    1

    OK:全部运行

    代码来源:

    对调度脚本日期参数检查(其实这个检查只能对非纯数字进行检查,对过长度比如20190101010101010101就无效):

    bacth_date=$1
    echo "bacth_date:$1"
    echo "std_out:$?"
    echo "${bacth_date}"|grep "20[0-9][0-9][0-1][0-9][0-3][0-9]" >/dev/null
    if [ $? -ne 0 ]
    then
        echo "[ `date +'%Y-%M-%d'` ]" "[ERROR]" "BATCH_DATE:${bacth_date} is invalid date format ."
       echo "1"
       exit 1
    fi
    [centos@s202 ~]$ sh test3.sh 2019xxxx
    bacth_date:2019xxxx
    std_out:0
    [ 2019-16-23 ] [ERROR] BATCH_DATE:2019xxxx is invalid date format .
    1
    [centos@s202 ~]$ sh test3.sh 20190101
    bacth_date:20190101
    std_out:0



  • 相关阅读:
    读写文件流
    关闭和退出窗口
    有什么问题?
    将aspx页面转换成htm页面
    读取rss聚合文件
    运算符重载实例
    委托
    将 Visual Studio .NET 调试器用于 ASP.NET 应用程序
    输入的字符串进行有规则的清洗
    几个常用的数据库连接字符串
  • 原文地址:https://www.cnblogs.com/wqbin/p/10909547.html
Copyright © 2011-2022 走看看