您好,登錄后才能下訂單哦!
case語句主要適用于以下情況:某個變量存在多種取值,需要對其中的每一種取值分別執行不同的命令序列。這種情況與多分支的If語句非常相似,只不過if與據需要判斷多個不同的條件按,而case只是判斷一個變量的不同取值。
檢查用戶輸入的字符類型
提示用戶從鍵盤輸入一個字符,通過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循環語句時,需要指定一個變量及可能的取值列表,針對每一個不同的取值重復執行相同的命令序列,直到變量值用完退出循環。在這里,“取值列表”稱為for語句的執行條件,其中多個屬性相同的對象,需要預先指定。
根據姓名批量添加用戶賬號,并設置初始密碼“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
一位同學查看自己的分數
#!/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循環語句時,可以根據特定的條件反復執行一個命令序列,直到該條件不再滿足時為止。在腳本應用中,
應該避免死循環的情況,否則后邊的命令操作將無法執行。因此,循環體內的命令序列中應包括修改測試條件的語句,以便再適當的時候事測試條件不再成立,從而結束循環。
批量添加用戶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
猜價格,猜商品的價格
要求:生成一個隨機的價格數目(0——999)作為實際價格,判斷用戶猜測的價格太高或太低,一直讓用戶猜中實際價格為止,輸出用戶猜測的次數和實際價格
#!/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次
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。