1、条件选择:if语句

    ①单分支

        if 判断条件;then
            条件为真的分支代码
        fi

    ②双分支        

        if 判断条件; then
              条件为真的分支代码
        else
              条件为假的分支代码
        fi

    ③多分支      

         if 判断条件1; then
               条件为真的分支代码
         elif 判断条件2; then
               条件为真的分支代码
         elif 判断条件3; then
               条件为真的分支代码
         else
               以上条件都为假的分支代码
         fi

示例:请用户输入成绩:80-100为优秀,60-79为通过,其他淘汰。

 #!/bin/bash
 read -p "pelease input your score: " score
 if [ "$score" -ge 80 -a "$score" -le 100 ];then
       echo "优秀"
 elif [ "$score" -lt 80 -a "$score" -ge 60 ];then
       echo "通过"
 else
       echo "淘汰"
 fi

2、条件判断: case语句

 语法:case 变量引用 in
    PAT1)
         分支1;;
    PAT2)
        分支2;;
    ...
      *)
       默认分支;;
        esac

       case支持glob风格的通配符:
              *: 任意长度任意字符
              ?: 任意单个字符
              []:指定范围内的任意单个字符
              a|b: ab

              。。。

      示例:编写脚本,提示用户输入yes或no不区分大小写,并判断用户输入的是yes还是no或者其他信息。

#!/bin/bash
read -p "please input yes or no: " yn
ans=$(echo $yn|tr "[[:upper:]]"  "[[:lower:]]")
case $ans in
y|yes)
   echo yes;;
n|no)
   echo no ;;
*)
  echo yes/no?
esac

3、for循环

     语法:for 变量名 in 列表 ; do
                    循环体
                done

     执行机制:依次将列表中的元素赋值给“变量名” ; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。

     列表生成方式:
      (1) 直接给出列表
      (2) 整数列表:
            (a) {start..end}
            (b) $(seq [start [step]] end)
      (3)
返回列表的命令
            $(COMMAND)
      (4)
使用glob, 如: *.sh
      (5)
变量引用;
            $@, $*

    示例:用for循环打印九九乘法表。

#!/bin/bash
for i in {1..9};do
    for j in $(seq $i);do
       echo -ne "$j*$i=$[$i*$j]\t"
    done
    echo
done

       for循环的特殊格式:
          for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
          do
                    循环体
          done

  • 控制变量初始化:仅在运行到循环代码段时执行一次

  • 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断

    示例:用for循环特殊格式打印九九乘法表。

#!/bin/bash
for ((i=1;i<=9;i++)); do

    for ((j=1;j<=i;j++)); do
       echo -ne "$j*$i=$[$j*$i]\t"
    done
    echo
done

4、while循环

    语法:while CONDITION; do
                        循环体
               done

     CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环
     因此: CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
     进入条件: CONDITIONtrue
     退出条件: CONDITIONfalse