1. 程式人生 > >shell腳本(三)while循環語句

shell腳本(三)while循環語句

系統/運維 Linux

理論部分:

循環的意思就是讓程序重復地執行某些語句;

whiler循環就是循環結構的一種,當事先不知道循環該執行多少次,就要用到while循環;

while循環語句的運行過程

使用while循環語句時,可以根據特定的條件反復執行一個命令,直到條件不滿足為止;

while會出現死循環的過程,因此循環體內的命令序列內應包括修改測試條件的語句

while語句的語法結構:

技術分享圖片

技術分享圖片

註意:

使用while循環語句時,有兩個特殊的條件測試操作即true(真)和false(假);

使用true時表示條件永遠成立,循環體內的命令序列將會無限執行下去,除非強制終止腳本或使用exit退出腳本;

反之使用false時循環體將不會被執行; ’這兩個特殊條件也可以用在if語句的條件測試中

應用實例

使用while語句執行批量添加規範的用戶

stu 1 stu 2…….

我們也可以使用while批量添加用戶,但是前提是用戶的命名必須有規範,有規律否則無法使用while進行創建

vim useradd.sh

#!/bin/bash
user="stu"
i=1
??? while [ $i -le 20 ]
do
??? useradd? ${user}$i
??? echo "123456" | passwd --stdin ${user}$i &>/dev/null
??? echo "${user}$i Users to add success"
? let i++
done

首先定義一個用戶名的前綴為stu

在定義一個變量用於改變條件

while 當$i 小於等於20 的時候執行下面的命令序列 let i++ 表示每循環一次i的值加1

當循環到21次的時候這個測試條件不成立了,因為21不小於等於20所以直接調到done結束循環

執行的結果

技術分享圖片

檢驗:

技術分享圖片

技術分享圖片

也可以使用while循環刪除

vim userdel.sh

#!/bin/bash
user="stu"
i=1
??? while [ $i -le 20 ]
do
??? userdel -r?? ${user}$i &> /dev/null
??? echo "${user}$i Users to del success"
? let i++
done

執行結果

技術分享圖片

實戰2

針對上訴要求主要設計思路如下

if通過變量RANDOM可獲得一個小於2十六次方的隨機整數,計算其與1000的余數即可獲得0~999的隨機價格,反復操作可以通過true作為測試條件,在用戶猜出實際價格為止,判斷猜測價格與實際價格的過程使用if語句實現,嵌套在while循環內使用變量來計算猜測的次數


例如:技術分享圖片

vim caijiage.sh

#!/bin/bash
price=$(expr $RANDOM % 1000)
times=0
echo "The prices of the goods is 0-999,Can you guess what is?"
while true
do
???? read -p "Please enter your price:" INT
??? let times++
? if? [ $INT -eq $price ]
?? then
????? echo "Good you guessed it"
????? echo "You guess the total $times times "
????? exit 0
?? elif
???? [ $INT -gt $price ]
?? then
??? echo "Is too high "
?? else
??? echo "It‘s too low "
? fi
done

執行腳本的結果

技術分享圖片

學會for while已經可以編寫一些腳本完成簡單的系統管理任務了。

shell腳本(三)while循環語句