?簡介
語法 | 描述 |
if | 條件語句 |
if else | 條件判斷語句 |
if else-if else | 多條件判斷語句 |
for | 循環執行命令 |
while | 循環執行命令 |
until | 直到條件為真時停止循環 |
case ... esac | 多選擇語句 |
break | 跳出循環 |
continue | 跳出當前循環 |
1. for 循環
for語句,定量循環,可以遍歷一個列表或數組中的元素一,并對每個元素執行相應的操作;
(1)for 循環示例:?
#!/bin/bash
x=0
for ((i=1;i<100;i++))
dox=x[$x+$i]
done
echo "$x"
2. while 循環
while 循環可以根據條件重復執行一段代碼;
(1)基本格式
#!/bin/bash
x=0
while [? ? ? ?]
do
? ? ? ? ? ? ? xxx??
done
echo "$x"
(2) while 循環示例:
1 #!/bin/bash2 s=03 i=1 #定義循環變量4 while [ $i -le 100 ] #定義循環條件5 do6 s=$[$s+$i] #累加7 i=$[$i+1]8 done9 echo "$s"
3. if 判斷
shell中的邏輯判斷一般用if語句,if語句中通常用[]
來表示條件測試,可以比較字符串、判斷文件是否存等。[ ] 中表達式兩邊與括號之間要有空格if語句是Linux中最基本的條件控制語句,與C、Python這些語言不同,判斷語句后需要用?then?指明,結束部分用?fi?指明;
(1)基本格式:
#!/bin/bash
if [? ]
then
? ? ? ? ……
fi
if [? ]
then
? ? ? ? ……
fi
(2) if 判斷語句示例?
#!/bin/bash
a=$1
b=$2
if [ $a == $b ];thenecho "a and b is equal"
fi
if [ $a != $b ];thenecho "a and b is not equal"
fi
4. case 語句
case
?語句用于執行多個條件測試,每個條件稱為一個case
,并根據第一個匹配的條件執行相應的代碼塊;可以用case語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令;
(1)基本格式
#!/bin/bash
case $1 in
1)
? ? ? ? echo " "
;;
2)? ?
? ? ? ? echo " "
;;
3)
? ? ? ? echo " "
;;
*)
? ? ? ? echo " "
;;
esac
?如上所示,取值后面必須為單詞in,每一模式必須以右括號結束。取值可以為變量或常數。匹配發現取值符合某一模式后,其間所有命令開始執行直至?;;??
case的語法和C語言差別很大,它需要一個esac(就是case反過來)作為結束標記,每個case分支用右圓括號,用兩個分號表示break。
?(2) case 語句示例?
#輸入兩個值及運算符號實現任意四則運算
#!/bin/bash
read -p "input number:" a
read -p "input number:" b
read -p "input fuhao:" c
case $c in
+)let "result=$a+$b"
echo $result;;
-)let "result=$a-$b"
echo $result;;
/)let "result=$a/$b"
echo $result;;
*)let "result=$a*$b"
echo $result;;
esac
5. break 語句
break 語句用于跳出當前循環(for、while 或 until 循環),并終止循環的執行。
(1)break 語句示例? ?
#!/bin/bashfor i in {1..10}
doif [ $i -eq 5 ]; thenbreakfiecho $i
done
常用的整數比較條件:
- -eq:等于。
- -ne:不等于。
- -gt:大于。
- -lt:小于。
- -ge:大于等于。
- -le:小于等于。
?
常見的字符串比較條件:
- =:等于。
- !=:不等于。
- -z:為空字符串。
- -n:非空字符串。
格式
- [ 字符串1 = 字符串2 ] 是否相同
- [ 字符串1 != 字符串2 ] 是否不相同
- [ -z 字符串 ] 是否為空
- [ -n 字符串 ] 字符是否存在