if/for/while/until/break/continue

判断语句if

 

  简单if结构

      if expression

      then

       command

       command

       fi

在使用这种简单if结构时,要特别注意测试条件后如果没有";",则then语句要换行,否则会产生错误。如果

if和then在同一行必须有“;”隔开

 

   if/else结构   

   命令式双向选择语句,当用户执行脚本时如果不需要满足if后的表达式也会执行else后的命令 起结构为:

   if expression1

        then

                command

        else

                 command

     fi

 

     if/elif/else

   if/elif/else结构针对某一事件多种情况进行处理.通常表现为"如果满足某种条件,则进行某种处理,直到找到满足的条件,然后执行相应处理其语法

为:

      if expression

              then

                      command

        elif expression

                then

                      command

           .......

            else

                        command

            fi  

 

case结构

              case和if/elif/else结构一样,case结构可用于多分支选择语句

      case    variable in

            value 1)                    ----当value=variable时 就会执行value的语句

                    command

                      ........

                     ;;

               value 2)

                       command

                        .....

                      ;;

                 *)                              ------如果value都没和variable想等的 就则行此条语句

                         command

                            .......

                          ;;

               esac

case  $变量名称in   <==关键字为 case ,还有变数前有钱字号
  "第一个变数内容")   <==每个变数内容建议用双引号括起来,关键字则为小括号 )
 程式段
 ;;            <==每个类别结尾使用两个连续的分号来处理!
  "第二个变数内容")
 程式段
 ;;
  *)                  <==最后一个变数内容都会用 * 來代表所有其他值
 不包含第一个变数内容与第二个变数内容的其它程式执行段
 ;;
esac                  <==最终 case 结尾

for循环

      列表for循环

       列表for循环语句用于将一组命令执行已知次数,下面给出for循环的基本格式:

             for variable in {list}

            do

                   command

                    command

                      .....

              done

其中do和done之间的命令称为循环体,执行次数和list列表中常数或字符串的个数相同。
当执行for循环时,首先将in后的list列表的第一个常数或字符串赋值给循环变量,然后执行循环体;接着将list列表中的第二个常数或字符串赋值给循环变量,再次执行循环体,这个过程将一直持续到list列表中无其他的常数或字符串,然后执行done命令后的命令序列。

 

            不带列表for循环

                不带列表for循环执行时由用户指定参数和参数的个数,下面给出for不带列表for的基本格式

             for variable

              do

                   command

                   command

               done

    其中do和done之间命令为循环体,Shell会自动的将命令行键入的所有参数依次组织成列表,每次将一个命令行键入的参数显示给用户,直至所有的命令行中的参数都显示给用户。

 

例子:

#!/bin/bash

for a
do
echo $a
done

./for.sh 10 9 8 7
10
9
8
7
 

类C风格的for循环(1)

    类C风格的for也可被称为计次循环,一般用于次数已知情况,下面给出累C的格式

      for (( expr1;expr2;expr3 ))

       do

                command

      done

 

例子

      for (( i=0;i<=10;i++)

        do

            echo $i

         done

./for1.sh
0
1
2
3
4
5
6
7
8
9

 类C风格的for循环(2)

  对类C风格的for循环结构的解释:
其中表达式expr1为循环变量赋初值的语句
表达式expr2决定是否进行循环的表达式,当判断expr2退出状态为0执行do和done之间的循环体,当退出状态为非0时将退出for循环执行done后的命令
表达式expr3用于改变循环变量的语句
类C风格的for循环结构中,循环体也是一个块语句,要么是单条命令,要么是多条命令,但必须包裹在do和done之间。

 

while循环

 while循环语句也称前测试循环语句,它的唇环重复执行次数,是利用一个条件来控制是否继续重复执行这个语句。while语句与for语句相比

,无论是语法还是执行的流程,都比较简明易懂。while循环格式:

      while expression

      do

            command

            command

       done

   while循环语句之所以明明为前测试循环,是因为他要先判断此循环的条件是否成立,然后才作重复执行的操作。也就是说,while循环

语句执行过程是,先判断expression的退出状态,如果为0,则执行循环,否则退出循环

 

计数器控制的while循环

假定该种情形是在已经准确知道要输入的数据或字符串的数目,在这种情况下可采用计数器控制的while循环结构来处理。这种情形下while循环的格式如下所示:
                               counter = 1
                              while expression
                             do
                                     command
                                     …
                                   
                                    command
                                     …
                           done

结束标记控制的while循环
在Linux Shell编程中很多时候不知道读入数据的个数,但是可以设置一个特殊的数据值来结束while循环,该特殊数据值称为结束标记,其通过提示用户输入特殊字符或数字来操作。当用户输入该标记后结束while循环,执行done后的命令。在该情形下,while循环的形式如下所示:
                             read variable
                             while [[ "$variable" != sentinel ]]
                             do
                                   read variable
                             done

 

标志控制的while循环
标志控制的while循环使用用户输入的标志的值来控制循环的结束,这样避免了用户不知到循环结束标记的麻烦。在该情形下,while循环的形式如下所示:
                                  signal=0
                                  while (( signal != 1 ))
                                  do
                                            …
                                           if expression
                                           then
                                                 signal=1
                                           fi

                                             done


命令行控制的while循环
有时需要使用命令行来指定输出参数和参数个数,这时用其他的三种形式的while循环是无法实现的,所以需要使用命令行控制的while循环。该形式下,while循环通常与shift结合起来使用,其中shift命令使位置变量下移一位(即$2代替$1,$3代替$2),并且使$#变量递减,当最后一个参数也显示给用户后,$#就会等于0,同时$*也等于空,下面是该情形下,while循环的形式为:
                                 while [[ "$*" != "" ]]
                                 do
                                        echo "$1"
                                       shift
                                 done                                           …
                

 

until循环

在执行while循环时,只要是expression的退出状态为0将一直执行循环体。until命令和while命令类似,但区别是until循环中expression的退出状态不为0将循环体一直执行下去,直到退出状态为0,下面给出了until循环的结构:
                          until expression
                         do
                               command
                               command
                               …
                         done

 

嵌套循环
一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。在外部循环的每次执行过程中都会触发内部循环,直至内部完成一次循环,才接着执行下一次的外部循环。for循环、while循环和until循环可以相互嵌套。

 


 break循环控制符

break语句可以应用在for、while和until循环语句中,用于强行退出循环,也就是忽略循环体中任何其他语句和循环条件的限制。

 


continue循环控制符

continue循环控制符应用在for、while和until语句中,用于让脚本跳过其后面的语句,执行下一次循环。

 


select结构
 
Select是bash的扩展结构,用于交互式菜单显示,用于从一组不同的值中进行选择,功能有点类似于case结构,但其交互性要比case好的多,其基本结构为:

                     select variable in {list}
                     do
                          command
                          …
                           break
                     done

 

 

你可能感兴趣的:(shell基础)