中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell腳本之Case和循環語句

發布時間:2020-07-08 20:08:01 來源:網絡 閱讀:818 作者:23trl 欄目:云計算

Shell腳本之Case和循環語句

Shell腳本之Case和循環語句

本章結構:

case多分支語句

循環語句

for循環語句

while循環語句

一.case多分支語句

Shell腳本之Case和循環語句

case語句主要適用于以下情況:某個變量存在多種取值,需要對其中的每一種取值分別執行不同的命令序列。這種情況與多分支的If語句非常相似,只不過if與據需要判斷多個不同的條件按,而case只是判斷一個變量的不同取值。

1.項目實戰

檢查用戶輸入的字符類型
提示用戶從鍵盤輸入一個字符,通過case語句判斷該字符是否為字母,數字或者其他控制字符,并給出相應的提示信息

#!/bin/bash
read -p "請輸入一個字符" key
case $key in
[a-z]|[A-Z])
        echo "你輸入的是字母"
;;
[0-9])
        echo "你輸入的是數字"
;;
*)
        echo "你輸入的是特殊符號"
esac
~                               
[root@localhost ~]# ./1.sh

請輸入一個字符a
你輸入的是字母
[root@localhost ~]# ./1.sh
請輸入一個字符S
你輸入的是字母
[root@localhost ~]# ./1.sh
請輸入一個字符3
你輸入的是數字
[root@localhost ~]# ./1.sh
請輸入一個字符&
你輸入的是特殊符號

二.for循環語句

Shell腳本之Case和循環語句

使用for循環語句時,需要指定一個變量及可能的取值列表,針對每一個不同的取值重復執行相同的命令序列,直到變量值用完退出循環。在這里,“取值列表”稱為for語句的執行條件,其中多個屬性相同的對象,需要預先指定。

1.項目實戰

根據姓名批量添加用戶賬號,并設置初始密碼“123456”

1.1先做一個姓名的列表文件
[root@localhost ~]# vim /root/users.txt

chenwen
zhangsan
wangwu
lisi

~                                                            
1.2批量添加用戶和設置密碼
[root@localhost ~]# vim uaddfor.sh

#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
        useradd $UNAME
        echo "123456" | passwd --stdin $UNAME &>/dev/null
done
~                                                                                       
~                                        
1.3測試并執行結果
[root@localhost ~]# chmod +x uaddfor.sh
[root@localhost ~]# ./uaddfor.sh
[root@localhost ~]# tail -4 /etc/passwd
chenwen:x:1021:1021::/home/chenwen:/bin/bash
zhangsan:x:1022:1022::/home/zhangsan:/bin/bash
wangwu:x:1023:1023::/home/wangwu:/bin/bash
lisi:x:1024:1024::/home/lisi:/bin/bash

2.第二個實戰

一位同學查看自己的分數
Shell腳本之Case和循環語句

#!/bin/bash
read -p "請輸入你的分數(0-100)" scoure
case $scoure in
 [8-9][0-9]|100)
        echo "成績優秀"
;;

 7[0-9])
        echo "成績良好"

;;
 6[0-9])
        echo "成績合格"
;;
 [0-9]|[1-5][0-9])
        echo "成績不合格"
;;
*)
        echo "輸入有誤,請重新輸入"

esac
~                          
[root@localhost ~]# ./e.sh
請輸入你的分數(0-100)90
成績優秀
[root@localhost ~]# ./e.sh
請輸入你的分數(0-100)75
成績良好
[root@localhost ~]# ./e.sh
請輸入你的分數(0-100)51
成績不合格
[root@localhost ~]# ./e.sh
請輸入你的分數(0-100)123
輸入有誤,請重新輸入

三.while 循環語句

Shell腳本之Case和循環語句

使用while循環語句時,可以根據特定的條件反復執行一個命令序列,直到該條件不再滿足時為止。在腳本應用中,
應該避免死循環的情況,否則后邊的命令操作將無法執行。因此,循環體內的命令序列中應包括修改測試條件的語句,以便再適當的時候事測試條件不再成立,從而結束循環。

1.實戰項目

批量添加用戶20個用戶賬號,名稱依次為stt1,stu2 ...stt20,并設置密碼123456

[root@localhost ~]# vim 3.sh

#/bin/bash
PREFLX="stt"
i=1
while [ $i -le 20 ]
do
        useradd ${PREFLX}$i
        echo "123456" | passwd --stdin ${PREFLX}$i &> /dev/null
let i++
done

[root@localhost ~]# chmod +x 3.sh
[root@localhost ~]# ./3.sh
[root@localhost ~]# tail -3 /etc/passwd
stt18:x:1042:1042::/home/stt18:/bin/bash
stt19:x:1043:1043::/home/stt19:/bin/bash
stt20:x:1044:1044::/home/stt20:/bin/bash
2.第二個實戰項目

猜價格,猜商品的價格
要求:生成一個隨機的價格數目(0——999)作為實際價格,判斷用戶猜測的價格太高或太低,一直讓用戶猜中實際價格為止,輸出用戶猜測的次數和實際價格

[root@localhost ~]# vim 4.sh

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品的實際價格范圍為0~999,猜猜看是多少?"
while true
do
  read -p "請輸入你猜測的價格數目:" INT
  let TIMES++
if [ $INT -eq $PRICE ];then
        echo "恭喜你答對了,實際價格是$PRICE"
        echo "你總共猜測了$TIMES次"
exit 0
elif [ $INT -gt $PRICE ];then
        echo "太高了!"
else
        echo "太低了!"
fi
done
~                                    
[root@localhost ~]# chmod +x 4.sh
[root@localhost ~]# ./4.sh

商品的實際價格范圍為0~999,猜猜看是多少?
請輸入你猜測的價格數目:345
太低了!
請輸入你猜測的價格數目:456
太低了!
請輸入你猜測的價格數目:678
太高了!
請輸入你猜測的價格數目:378 
太低了!
請輸入你猜測的價格數目:400
太低了!
請輸入你猜測的價格數目:450
太低了!
請輸入你猜測的價格數目:455
太低了!
請輸入你猜測的價格數目:456
太低了!
請輸入你猜測的價格數目:567
太低了!
請輸入你猜測的價格數目:589
太高了!
請輸入你猜測的價格數目:580
太低了!
請輸入你猜測的價格數目:581
恭喜你答對了,實際價格是581
你總共猜測了12次

以上就是我們所有的內容了

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

成安县| 鄂托克旗| 柏乡县| 泸溪县| 文登市| 蕲春县| 平凉市| 松原市| 屯昌县| 富平县| 宁强县| 社旗县| 嘉祥县| 白朗县| 大英县| 洛宁县| 四平市| 陕西省| 四川省| 满城县| 镇雄县| 玉环县| 冀州市| 广昌县| 南宫市| 葫芦岛市| 白水县| 华阴市| 五原县| 邳州市| 平塘县| 彭山县| 融水| 高平市| 阿图什市| 博客| 安塞县| 万载县| 河间市| 潍坊市| 比如县|