1、条件语句

1、单分支 if 语句

  1. if condition
  2. then
  3. command1
  4. command2
  5. ...
  6. commandN
  7. fi
  8. # 判断nginx服务是否启动: grep -v 排除grep命令,
  9. if [ $(ps aux | grep nginx | grep -v grep | wc -l) -ge 1 ];then
  10. echo "nginx server exist!"
  11. fi

2、多分支 if 语句
if condition1;then
command1
elif condition2;then
command2
......
elif conditionN;then
commandN
else
command
fi

  1. # 获取系统版本信息
  2. sys_version=$(rpm -q centos-release | cut -d- -f3)
  3. if [ ${sys_version} -eq 6 ];then
  4. echo "sysversion is ${sys_version}"
  5. elif [ ${sys_version} -eq 7 ];then
  6. echo "sysversion is ${sys_version}"
  7. else
  8. echo "sysversion is ${sys_version}"
  9. fi

2、循环语句

1、for 循环:

循环列表以 $IFS 分割,默认为空白符。可自定义修改。for 循环语法:

  1. for var in item1 item2 ... itemN
  2. do
  3. command1
  4. command2
  5. ...
  6. commandN
  7. done
  1. # 求1~10的和
  2. sum=0
  3. for num in {1..10}
  4. do
  5. let sum=${sum}+${num}
  6. done
  7. echo "1~10的和为 ${sum}"
  1. OLD_IFS=$IFS # 默认$IFS分隔符
  2. IFS=":" # 指定新的$IFS分隔符
  3. for i in $(head -1 /etc/passwd);
  4. do
  5. echo ${i}
  6. done
  7. IFS=${OLD_IFS} # 还原$IFS分隔符

2、while循环:

while 循环通常用于处理未知数量对象的操作

  1. while 条件表达式:do
  2. command
  3. done
  1. p=$1 # 输入的第一个参数作为结束边界
  2. i=1 # 开始边界值
  3. sum=0 # 总和
  4. while [ ${i} -le ${p} ]
  5. do
  6. sum=$(( ${sum}+${i} ))
  7. i=$(( ${i}+1 ))
  8. done
  9. echo "1~${stop}的和是:${sum}"

3、until循环

条件表达式为 true 时停止,否则一直运行

  1. until 条件表达式
  2. do
  3. command
  4. done
  1. # 打印 1-5 数字
  2. NUM=0
  3. until [ ${NUM} -ge 5 ]
  4. do
  5. let NUM++
  6. echo $NUM
  7. done

4、break与continue
#!/bin/bash

N=0
while true; do
    let N++
    if [ $N -eq 5 ]; then
        break
    fi
    echo $N
done


#!/bin/bash
N=0
while [ $N -lt 5 ]; do
    let N++
    if [ $N -eq 3 ]; then
        continue
    fi
    echo $N
done

3、选择语句

1、case语句
case 模式名    in
    模式 1)
        命令
        ;;
    模式 2)
        命令
        ;;
    *)
        不符合以上模式执行的命令
esac
# 匹配输入的参数与对应的命令
case $1 in
        start)
                echo "start..."
                ;;
        stop)
                echo "stop..."
                ;;
        restart)
                echo "restart..."
                ;;
        *)
                echo "command not in {start|stop|restart}"
esac