标准输出的思考

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



原文地址:https://www.cnblogs.com/wqbin/p/10909547.html