1. 程式人生 > 其它 >Shell 運算子/條件判斷/流程控制

Shell 運算子/條件判斷/流程控制

一、運算子

1、基本語法

  1. "$((運算式))" 或 "$[運算式]"
  2. expr + , - , \*, /, % 加,減,乘,除,取餘

注意:expr 運算子間要有空格

2、案例實操

(1)計算3+2的值

[root@centos7 shell_test]# expr 2 + 3
5

(2)計算3-2的值

[root@centos7 shell_test]# expr 3 - 2
1

(3)計算(2+3)X4的值

  • expr一步完成計算
[root@centos7 shell_test]# expr `expr 2 + 3` \* 4
20
  • 採用$[運算式]方式
[root@centos7 shell_test]#  S=$[(2
+3)*4] [root@centos7 shell_test]# echo $S

二、if 判斷

1、基本語法

if [ 條件判斷式 ];then
    程式
fi

或者

if [ 條件判斷式 ]
then
    程式
fi

注意事項:

  1. [ 條件判斷式 ],中括號和條件判斷式之間必須有空格
  2. if 後要有空格

2、案例實操

輸入一個數字,如果是1,則輸出banzhang zhen shuai,如果是2,則輸出cls zhen mei,如果是其它,什麼也不輸出。

[root@centos7 shell_test]#  touch if.sh
[root@centos7 shell_test]#  vim 
if.sh #!/bin/bash if [ $1 -eq "1" ] then echo "banzhang zhen shuai" elif [ $1 -eq "2" ] then echo "cls zhen mei" fi

三、case 語句

1、基本語法

case $變數名 in 
"值1") 
    如果變數的值等於值1,則執行程式1 
;; 
"值2") 
    如果變數的值等於值2,則執行程式2 
;; 
    …省略其他分支… 
*) 
    如果變數的值都不是以上的值,則執行此程式 
;; 
esac

注意事項:

  1. case行尾必須為單詞“in”,每一個模式匹配必須以右括號“)”結束。
  2. 雙分號“;;”表示命令序列結束,相當於java中的break。
  3. 最後的“*)”表示預設模式,相當於java中的default。

2、案例實操

輸入一個數字,如果是1,則輸出banzhang,如果是2,則輸出cls,如果是其它,輸出renyao。

[root@centos7 shell_test]#  touch case.sh
[root@centos7 shell_test]#  vim case.sh

#!/bin/bash

case $1 in
"1")
    echo "banzhang"
;;
"2")
    echo "cls"
;;
*)
    echo "renyao"
;;
esac

四、for 迴圈

1、基本語法1

for (( 初始值;迴圈控制條件;變數變化 ))
do
    程式
done

2、案例實操

從1加到100

[root@centos7 shell_test]#  touch for1.sh
[root@centos7 shell_test]#  vim for1.sh

#!/bin/bash

s=0
for((i=0;i<=100;i++))
do
    s=$[$s+$i]
done
echo $s

3、基本語法2

for 變數 in 值1 值2 值3…
do
    程式
done

4、案例實操

列印所有輸入引數

#!/bin/bash
#列印數字

for i in $*
do
        echo "ban zhang love $i "
done

echo "================================"

for i in $@
do
        echo "ban zhang love $i "
done

echo "================================"

for i in "$*"
do
        echo "ban zhang love $i "
done

echo "================================"

for i in "$@"
do
        echo "ban zhang love $i "
done

測試

[root@centos7 shell_test]# sh for2.sh 11 22 33 44
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 
================================
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 
================================
ban zhang love 11 22 33 44 
================================
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 

5、比較$*和$@區別

  1. $*和$@都表示傳遞給函式或指令碼的所有引數,不被雙引號“”包含時,都以$1 $2 …$n的形式輸出所有引數。
  2. 當它們被雙引號“”包含時,“$*”會將所有的引數作為一個整體,以“$1 $2 …$n”的形式輸出所有引數;“$@”會將各個引數分開,以“$1” “$2”…”$n”的形式輸出所有引數。

五、while 迴圈

1、基本語法

while [ 條件判斷式 ]
do
    程式
done

2、案例實操

從1加到100

[root@centos7 shell_test]#  touch while.sh
[root@centos7 shell_test]#  vim while.sh

#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done

echo $s