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



  • 相关阅读:
    【BZOJ1030】文本生成器
    luogu P1312 Mayan游戏
    luogu P1074 靶形数独
    【题解】 [HNOI2009] 最小圈 (01分数规划,二分答案,负环)
    【题解】 [HEOI2016]排序题解 (二分答案,线段树)
    【题解】 Luogu P1541 乌龟棋总结 (动态规划)
    【题解】Luogu P2047 社交网络总结 (Floyd算法,最短路计数)
    【总结】最短路径条数问题
    第一天进入博客这个神奇的领域 在此%%%erosun
    什么是Kubernetes?
  • 原文地址:https://www.cnblogs.com/wqbin/p/10909547.html
Copyright © 2011-2022 走看看