Shell 運算子/條件判斷/流程控制
阿新 • • 發佈:2021-07-06
一、運算子
1、基本語法
- "$((運算式))" 或 "$[運算式]"
- 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
注意事項:
- [ 條件判斷式 ],中括號和條件判斷式之間必須有空格
- if 後要有空格
2、案例實操
輸入一個數字,如果是1,則輸出banzhang zhen shuai,如果是2,則輸出cls zhen mei,如果是其它,什麼也不輸出。
[root@centos7 shell_test]# touch if.sh [root@centos7 shell_test]# vimif.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
注意事項:
- case行尾必須為單詞“in”,每一個模式匹配必須以右括號“)”結束。
- 雙分號“;;”表示命令序列結束,相當於java中的break。
- 最後的“*)”表示預設模式,相當於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 $2 …$n的形式輸出所有引數。
- 當它們被雙引號“”包含時,“$*”會將所有的引數作為一個整體,以“$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