天天看點

shell腳本工具之控制結構

   流程控制結構是程式語言中用于控制一段腳本執行流程的結構,shell提供了對多種流程控制結構的支援,包括條件結構,分支結構和循環結構.

一.if語句

格式1:

if 表達式;then

   語句1

else

   語句2

fi

格式2:

if 表達式1;then

   if 表達式2;then

       else

           if 表達式3

               語句2

           else

               語句3

           fi

           語句4

      fi

格式3:

if 表達式1

elif 表達式2

   語句3

[root@tong1 ~]# cat 1.sh 

#!/bin/bash

echo "---------------------"

read -p '請輸入兩個整數值:' a b

if [ $a -gt $b ] ;then

    echo "第一個數大于第二個數"

elif [ $a -lt $b ];then

    echo "第一個數小于第二個數"

elif [ $a = $b ];then

   echo "兩個數相等"

  echo "輸入的數有問題"

fi 

echo "----------------------"

[root@tong1 ~]# ./1.sh 

---------------------

請輸入兩個整數值:3 5

第一個數小于第二個數

----------------------

請輸入兩個整數值:5 3

第一個數大于第二個數

請輸入兩個整數值:3 3

兩個數相等

請輸入兩個整數值:r 5

./1.sh: line 4: [: r: integer expression expected

./1.sh: line 6: [: r: integer expression expected

輸入的數有問題

[root@tong1 ~]# 

二.case語句

case 變量 in

模式1)

    語句1

    ;;

模式2)

    語句2

esac

case $1 in

值1|值2)

     語句1

     ;;

值3)

    case $2 in

        值4)

            語句2

            ;;

        值5)

            語句3

    esac

值6)

    語句4

abc=`expr $a / 10`

case $abc in

9)

   echo "成績優秀"

   ;;

8)

   echo "表現良好"

7)

   case $2 in

        '男')

            echo "男生成績不好"

        '女')

           echo "成績良好"

           ;;

   esac

*)

   echo "成績不及格"

三.while循環

while 表達式

do

    語句

done

while 表達式1

     while 表達式2

     do

          語句1

     done

read -p '請輸入一個整數值:' a

i=1

while [ $a -ge $i ]

    echo "$a的平方值:`expr $a \* $a`"

    a=$(($a - 1))

請輸入一個整數值:5

5的平方值:25

4的平方值:16

3的平方值:9

2的平方值:4

1的平方值:1

四.for循環

格式:

for 變量 [ in 清單]

   語句

for b in 1 2 3 4 5

   echo "$b-------------`expr $b \* $b`"

1-------------1

2-------------4

3-------------9

4-------------16

5-------------25

[root@tong1 ~]#

五.until循環(不滿足條件就循環)

until [ 表達式 ]     --不滿足條件就循環

done 

請輸入一個數:6

------------*

1------------1

2------------4

3------------9

4------------16

5------------25

6------------36

read -p "請輸入一個數:" abc

until [ $i -gt $abc ]

   a=`expr $i \* $i`

   echo "$i------------$a"

   i=$(($i+1))

六.select結構

select 變量 in 清單

do 

select a in 1 2 3 4 5

   case $a in

      1)

           echo "這是1"

      2)   

           echo "這是2"

      3)

           echo "這是3"

      4)

           echo "這是4"

      *)

           echo "退出"

           break

1) 1

2) 2

3) 3

4) 4

5) 5

#? 1

這是1

#? 2

這是2

#? 3

這是3

#? 4

這是4

#? 5

退出

七.break和continue

break:跳出循環體,break 2跳出外循環體

continue:退出本次循環,continue 2跳出外循環體

本文轉自 z597011036 51CTO部落格,原文連結:http://blog.51cto.com/tongcheng/1624202,如需轉載請自行聯系原作者

繼續閱讀