在写shell脚本的时候一直报错未找到命令,脚本如下:
#!/bin/bash
in_date=$1
if [ ! $in_date ]; then
yesterday=`date -d "yesterday" '+%Y%m%d'`
yesterday1=`date -d "yesterday" '+%Y-%m-%d'`
else
yesterday=$in_date
yesterday1=`date -d "$in_date" '+%Y-%m-%d'`
fi
echo $yesterday
echo $yesterday1
time1="$yesterday1 00:00:00"
echo $time1
res=999
if [ $res -le 1000 ]
then
echo $res
warn1="警告:" $time1 "抽取数据量小于1000,请核实!"
echo warn1
fi
echo "警告:" $time1 "抽取" $var"条数据"
只看逻辑不看细节还真的找不到错误,在shell中=号两边没有空格是表示赋值,有空格表示比较。而且中括号也要有空格。if条件中括号里面两边要有空格,由于if条件语句中"warn1=“警告:”
t
i
m
e
2
"
抽
取
数
据
量
小
于
1000
,
请
核
实
!
"
"
是
赋
值
操
作
,
所
以
time2"抽取数据量小于1000,请核实!""是赋值操作,所以
time2"抽取数据量小于1000,请核实!""是赋值操作,所以time2左边有空格是错误的,而"echo “警告:” $time2 “抽取” $var"条数据""不是赋值操作,只是输出字符串,所以不会报错。
正确的shell脚本应该是:
#!/bin/bash
in_date=$1
if [ ! $in_date ]; then
yesterday=`date -d "yesterday" '+%Y%m%d'`
yesterday1=`date -d "yesterday" '+%Y-%m-%d'`
else
yesterday=$in_date
yesterday1=`date -d "$in_date" '+%Y-%m-%d'`
fi
echo $yesterday
echo $yesterday1
time1="$yesterday1 00:00:00"
echo $time1
res=999
if [ $res -le 1000 ]
then
echo $res
warn1="警告:"$time1"抽取数据量小于1000,请核实!"
echo warn1
fi
echo "警告:" $time1 "抽取" $var"条数据"