4.1、if语句
4.1.1单分支
if 条件表达式;then 命令
fi
#!/bin/bash N=10 if [ $N -gt 5 ]; then echo yes fi
执行结果 bash test.sh yes
4.1.2双分支
if 条件表达式;then 命令 else 命令 fi
示例1:
#!/bin/bash N=10 if [ $N -lt 5 ];then echo yes else echo no fi #执行结果 bash test.sh no
示例2:判断crond进程是否运行
#!/bin/bash NAME=crond NUM=$(ps -ef | grep $NAME | grep -e grep) if [ $NUM -eq 1];then echo “$NAME is running” else echo "$NAME is not running" fi
示例3:检查主机是否存活
#!/bin/bash if ping -c 1 192.168.1.1 > /dev/null;then echo "OK" else echo "NO" fi
if语句可以直接对命令状态进行判断,就省去获取$?这一步!
4.1.3多分支
if 条件表达式;then 命令 elif 条件表达式;then 命令 else 命令 fi
当不确定条件符合哪一个时,就可以吧已知条件判断写出来,做相应的处理
示例1:
#!/bin/bash N=$1 if [ $N -eq 3 ];then echo "eq 3" elif [ $N -eq 5 ];then echo " eq 5" elif [ $N -eq 8 ];then echo "eq 8" else echo "no" fi
如果第一个条件符合就不再向下匹配
示例2:根据linux不同发行版使用不同的命令安装软件
#!/bin/bash if [ -e /etc/redhat-release ];then yum -y install wget elif [ $( cat /etc/issue | cut -d ' ' -f1) == "Ubuntu" ]; then apt-get install wget -y else Operating system does not support exit fi
4.2for语句
for 变量名 in 取值列表;do 命令 done
示例:
for i in {1..3};do echo $i done #执行结果 bash test.sh 1 2 3
for的语法也可以这么写:
#!/bin/bash for i in $@; { echo $i } #执行结果 # bash test.sh 1 2 3 1 2 3
默认for循环的取值列表是以空白符分隔,也就是第一章讲系统变量里的$IFS: