a=10 b=20 if [ $a -lt 100 -a $b -gt 15 ] then echo"$a 小于 100 且 $b 大于 15 : 返回 true" else echo"$a 小于 100 且 $b 大于 15 : 返回 false" fi
逻辑运算符
说明
举例
&&
逻辑的 AND
[[ 10 -lt 100 && 20 -gt 100 ]] 返回 false
||
逻辑的 OR
[[ 10 -lt 100 \|\| 20 -gt 100 ]] 返回 true
a=10 b=20
if [[ $a -lt 100 && $b -gt 100 ]] then echo"返回 true" else echo"返回 false" fi
文件测试运算符
说明
[ -d file ]
检测文件是否是目录
[ -f file ]
检测文件是否是普通文件(既不是目录,也不是设备文件)
[ -r file ]
检测文件是否可读
[ -w file ]
检测文件是否可写
[ -x file ]
检测文件是否可执行
[ -s file ]
检测文件是否为空(文件大小是否大于0)
[ -e file ]
检测文件(包括目录)是否存在
Shell 流程控制
if 语句
if condition1 then command1 elif condition2 then command2 else commandN fi
# 单行if语句 if condition; thencommand; fi
for 循环
for var in item1 item2 ... itemN do command1 command2 ... commandN done
for var in item1 item2 ... itemN; do command1; command2… done;
# ------------------------类C语法 for((i=1;i<=10;i++)) do echo$i done # -----------------------数字序列 for i in $(seq 1 10) do echo $(expr $i \* 3 + 1); done # --------------------整数序列 for i in {1..10} do echo $(expr $i \* 3 + 1); done # -------------------遍历目录 for i in `ls`; do echo$i is file name\! ; done
if [ -z ${tmp} ] then hive " insert overwrite table tmp2 partition(${update}) select `(y|m|d)?+.+` from employee where ${update} ;" printf"%-20s\n"${update} > info fi done