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



  • 相关阅读:
    常用算法编程题目学习与训练的网站
    ES6的JavaScript算法思想实现之分而治之,动态规划,贪心算法和回溯算法
    ES6的JavaScript算法实现之排序、搜索和随机算法
    ES6的JavaScript数据结构实现之图
    ES6的JavaScript数据结构实现之二叉堆和堆排序
    ES6的JavaScript数据结构实现之树(二叉搜索树、AVL树、红黑树)
    ES6的JavaScript数据结构实现之递归
    ES6的JavaScript数据结构实现之字典与散列表
    ES6的JavaScript数据结构实现之集合
    ES6的JavaScript数据结构实现之链表
  • 原文地址:https://www.cnblogs.com/wqbin/p/10909547.html
Copyright © 2011-2022 走看看