bash脚本中 if 语句 和 for 语句使用方法

在bash shell脚本中,我们要先了解三种执行顺序

顺序执行 (从左到右,从上到下的执行)

选择执行 (条件满足或者不满足的时候,才会执行某段结构)

循环执行 (重复执行某段结构)

今天所写的if 就是选择顺序,for就是循环执行

在if或者for中不可避免的要使用一些结构,还有一些运算方法,我先把这些列出来,方便以后使用。

算术运算方法

1.$[expression]

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

示例:

# echo $[3+4]

# NUM1=5 ; NUM2=4 ; echo $[NUM1*NUM2]

2.let VAR=EXPRESSION

根据算术表达式完成算术运算并赋值给指定的变量;

3.$((EXPRESSION))

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

4.expr ARGU1 ARGU2 ARGU3

其中ARGU1和ARGU3必须是整数数值;ARGU2是算术运算符;

5.echo "EXPRESSION" | bc

6.bc <<< EXPRESSION

位置参数变量
   $0:命令的本身,对于脚本而言,就是该脚本的路径;
   $1,$2.....$n:脚本后面通过命令行给脚本传递的命令行参数;
       n>9时,引用该位置变量时,需要加{},即${10}

   特殊变量:
       $@:给出的所有位置参数的列表,当使用双引号引用时,每个参数作为单独的字符串存在;
       $*:给出的所有位置参数的列表,当使用双引号引用时,整个参数列表被当做一个字符串;
       $#:标识除去$0之外,整个命令行中有多少个参数;

shift命令,可以将$2->$1;

if语句:
       if: if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

       if语句的单分支结构:
           if 命令; then 命令;  fi

           注意:是否会执行then后面的命令,取决于if后面的命令的执行状态返回值;
               1.如果其返回值为真,则执行then后面的命令;
               2.如果其但回执为假,则不执行then后面的命令;


           建议在脚本中的书写格式:
               if CONDITION ; then
                   STATEMENT
                   ..
               fi

               或
               if CONDITION ;
               then
                   STATEMENT
                   ..
               fi

       if语句的双分支结构:
           if 命令; then 命令; else 命令; fi

           注意:是否会执行then或else后面的命令,取决于if后面的命令的执行状态返回值;
               1.如果其返回值为真,则执行then后面的命令;
               2.如果其但回执为假,则执行else后面的命令;


           建议在脚本中的书写格式:
               if CONDITION ; then
                   STATEMENT
                   ..
               else
               STATEMENT
                   ..
               fi

               或
               if CONDITION ;
               then
                   STATEMENT
                   ..
               else
               STATEMENT
                   ..
               fi

       if语句的多分支结构:(不建议使用,太麻烦,我们可以用下边的方法,进行单个或者多个的嵌套解决
            if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

            注意:是否会执行then或else后面的命令,取决于if后面的命令的执行状态返回值或者elif后面的命令的执行状态返回值;
               1.首先判断if后面的命令的状态返回值是否为真,如果为真,就执行then后面的语句;如果为假,就继续判断第一个elif后面的命令的执行状态返回值;
               2.第一个elif后面的命令的执行状态返回值为真,就执行第一个elif语句中then后面的命令,否则,就继续判断第二个elif后面的命令执行状态返回值;
               3.以此类推,会判断每个elif后面的命令的执行状态返回值是否为真,如果所有的if和elif后面的命令的执行状态返回值均为假,则执行else后面的语句;

            建议在脚本中的书写格式:
               if CONDITION ; then
                   STATEMENT
                   ..
               elif CONDITION2 ; then
                   STATEMENT
                   ..
               else ; then
               STATEMENT
                   ..
               fi

               或
               if CONDITION ;
               then
                   STATEMENT
                   ..
               elif CONDITION2 ; then
                   STATEMENT
                   ..
               else
               STATEMENT
                   ..
               fi

               注意:if的多分支结构,使用场景不多,而且有些时候,可以使用嵌套的单分支或双分支if结构代替if多分支结构;

               嵌套的if结构

                   if CONTITIONG1 ; then
                       if CONTITIONG2 ; then
                           if CONTITIONG3 ; then
                               STATEMENT
                               ..
                           else
                               STATEMENT
                           fi                           
                       else
                           STATEMENT
                       fi
                   else
                       STATEMENT
                   fi

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f305d425df0b70e2945474ee7e762466.html