shell脚本工具之控制结构
?? 流程控制結構是程序語言中用于控制一段腳本執行流程的結構,shell提供了對多種流程控制結構的支持,包括條件結構,分支結構和循環結構.
??? 
一.if語句
格式1:
if 表達式;then
?? 語句1
else
?? 語句2
fi
格式2:
if 表達式1;then
?? 語句1
else
?? if 表達式2;then
?????? else
?????????? if 表達式3
?????????????? 語句2
?????????? else
?????????????? 語句3
?????????? fi
?????????? 語句4
????? fi
fi
格式3:
if 表達式1
?? 語句1
elif 表達式2
?? 語句2
else
?? 語句3
fi
[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 "兩個數相等"
else
? echo "輸入的數有問題"
fi 
echo "----------------------"
[root@tong1 ~]# ./1.sh 
---------------------
請輸入兩個整數值:3 5
第一個數小于第二個數
----------------------
[root@tong1 ~]# ./1.sh 
---------------------
請輸入兩個整數值:5 3
第一個數大于第二個數
----------------------
[root@tong1 ~]# ./1.sh 
---------------------
請輸入兩個整數值:3 3
兩個數相等
----------------------
[root@tong1 ~]# ./1.sh 
---------------------
請輸入兩個整數值:r 5
./1.sh: line 4: [: r: integer expression expected
./1.sh: line 6: [: r: integer expression expected
輸入的數有問題
----------------------
[root@tong1 ~]# 
二.case語句
格式1:
case 變量 in
模式1)
??? 語句1
??? ;;
模式2)
??? 語句2
??? ;;
esac
格式2:
case $1 in
值1|值2)
???? 語句1
???? ;;
值3)
??? case $2 in
??????? 值4)
??????????? 語句2
??????????? ;;
??????? 值5)
??????????? 語句3
??????????? ;;
??? esac
值6)
??? 語句4
??? ;;
esac
[root@tong1 ~]# cat 1.sh 
#!/bin/bash
echo "---------------------"
read -p '請輸入兩個整數值:' a b
abc=`expr $a / 10`
case $abc in
9)
?? echo "成績優秀"
?? ;;
8)
?? echo "表現良好"
?? ;;
7)
?? case $2 in
??????? '男')
??????????? echo "男生成績不好"
??????????? ;;
??????? '女')
?????????? echo "成績良好"
?????????? ;;
?? esac
?? ;;
*)
?? echo "成績不及格"
?? ;;
esac
echo "----------------------"
[root@tong1 ~]# 
三.while循環
格式1:
while 表達式
do
??? 語句
done
格式2:
while 表達式1
do
???? while 表達式2
???? do
????????? 語句1
???? done
done
[root@tong1 ~]# cat 1.sh 
#!/bin/bash
echo "---------------------"
read -p '請輸入一個整數值:' a
i=1
while [ $a -ge $i ]
do
??? echo "$a的平方值:`expr $a \* $a`"
??? a=$(($a - 1))
done
echo "----------------------"
[root@tong1 ~]# ./1.sh 
---------------------
請輸入一個整數值:5
5的平方值:25
4的平方值:16
3的平方值:9
2的平方值:4
1的平方值:1
----------------------
[root@tong1 ~]#?
四.for循環
格式:
for 變量 [ in 列表]
do
?? 語句
done
[root@tong1 ~]# cat 1.sh 
#!/bin/bash
echo "---------------------"
for b in 1 2 3 4 5
do
?? echo "$b-------------`expr $b \* $b`"
done
echo "----------------------"
[root@tong1 ~]# ./1.sh 
---------------------
1-------------1
2-------------4
3-------------9
4-------------16
5-------------25
----------------------
[root@tong1 ~]#
五.until循環(不滿足條件就循環)
格式:
until [ 表達式 ]???? --不滿足條件就循環
do
?? 語句1
done 
[root@tong1 ~]# ./1.sh 
---------------------
請輸入一個數:6
------------*
1------------1
2------------4
3------------9
4------------16
5------------25
6------------36
----------------------
[root@tong1 ~]# cat 1.sh 
#!/bin/bash
echo "---------------------"
read -p "請輸入一個數:" abc
until [ $i -gt $abc ]
do
?? a=`expr $i \* $i`
?? echo "$i------------$a"
?? i=$(($i+1))
done
echo "----------------------"
[root@tong1 ~]#?
六.select結構
格式:
select 變量 in 列表
do 
??? 語句1
done
[root@tong1 ~]# cat 1.sh 
#!/bin/bash
echo "---------------------"
select a in 1 2 3 4 5
do
?? case $a in
????? 1)
?????????? echo "這是1"
?????????? ;;
????? 2)? ?
?????????? echo "這是2"
?????????? ;;
????? 3)
?????????? echo "這是3"
?????????? ;;
????? 4)
?????????? echo "這是4"
?????????? ;;
????? *)
?????????? echo "退出"
?????????? break
?????????? ;;
??? esac
done
echo "----------------------"
[root@tong1 ~]# ./1.sh 
---------------------
1) 1
2) 2
3) 3
4) 4
5) 5
#? 1
這是1
#? 2
這是2
#? 3
這是3
#? 4
這是4
#? 5
退出
----------------------
[root@tong1 ~]#
七.break和continue
break:跳出循環體,break 2跳出外循環體
continue:退出本次循環,continue 2跳出外循環體
轉載于:https://blog.51cto.com/tongcheng/1624202
總結
以上是生活随笔為你收集整理的shell脚本工具之控制结构的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 用户需求规格说明书模板,介绍
 - 下一篇: 开机显示c:\windows\windo