Shell程式設計之迴圈語句

2021-10-10 06:41:04 字數 3319 閱讀 8313

讀取不同的變數值,用來逐個執行同一組命令

for語句的使用規則:使用for迴圈語句時,需要指定乙個變數及可能的取值列表,針對每個不同的取值重複執行相同的命令序列,直到變數值用完退出迴圈。「取值列表」稱為for語句的執行條件,其中包括多個屬性相同的物件,需要預先指定(如通訊錄、ip黑名單)。

for 變數名 in 取值列表

do 命令序列

done

舉個栗子:

[root@client3 ~

]# vi /root/users.txt

[root@client3 ~

]# vi useradd.sh

#!/bin/bash

list=

$(cat /root/users.txt)

forname

in $list

do useradd $name

echo "123456"

| passwd --stdin $name

&>

/dev/

null

done

[root@client3 ~

]# sh useradd.sh

[root@client3 ~

]# tail -

3/etc/passwd

guleiting:x:

1004

:1004::

/home/guleiting:

/bin/bash

liuchengxu:x:

1005

:1005::

/home/liuchengxu:

/bin/bash

gongwei:x:

1006

:1006::

/home/gongwei:

/bin/bash

重複測試某個條件,只要條件成立則反覆執行

for迴圈語句非常適用於列表物件無規律,且列表**已固定(如某個列表檔案)的場合。而對於要求控制迴圈次數、操作物件按數字順序編號、按特定條件執行重複操作等情況,則更適合使用另外一種迴圈——while語句。

while 條件測試操作

do 命令序列

done

舉個栗子1:

[root@client3 ~

]# vi price.sh

#!/bin/bash

price=

$(expr $random

%1000

)times=0

echo "商品實際**範圍為0-999,猜猜看?"

while

true

do read -p "請輸入你的**:" int

lettimes

++if

[ $int -eq $price ]

; then echo "恭喜你答對了,實際**是$price"

echo "你總共猜測了$times次"

exit 0

elif [ $int -gt $price ]

; then echo "太高了!"

else

echo "太低了!"

fidone

商品實際**範圍為0

-999,猜猜看?

請輸入你的**:500

太低了!

請輸入你的**:800

太低了!

請輸入你的**:900

太高了!

請輸入你的**:850

太低了!

請輸入你的**:870

太高了!

請輸入你的**:863

恭喜你答對了,實際**是863

你總共猜測了6次

舉個栗子2:

使用while迴圈語句時,可以根據特定的條件反覆執行乙個命令序列,直到該條件不再成立,從而結束迴圈。

需求一:若要新增20個賬戶,名稱依次為stu1、stu2、stu3、。。。、stu20。

[root@server1 ~

]# vim new_users_while.sh

#!/bin/bash

#while批量新增使用者i=1

while

[ $i -le 20

] #控制迴圈條件

do #重複迴圈執行的操作

a=grep $name /etc/passwd | awk -f:

''name=

"stu$i"

if[ $name == a ]

then echo "姓名重複"

fiuseradd $name

echo "123456"

| passwd --stdin $name &

>

/dev/

null

let i++

done

[root@server1 ~

]# chmod +x new_users_while.sh

[root@server1 ~

]# grep "stu"

/etc/passwd | tail -

3若要把新增的這些使用者再刪除的話,也可以用while迴圈去做。

[root@server1 ~

]# vim del_use_while.sh

#!/bin/bash

#用while迴圈批量刪除使用者i=1

while

[ $i -le 177

] #控制迴圈次數

do name=

"stu$i"

a=`ls -lh /home/$name | awk ''`

if["$a"

!="0"

] then cp -r /home/$name /userfile_backup

fi userdel -r $name

let i++

done

#!/bin/bash

重複測試某個條件,只要條件不成立則反覆執行

until迴圈與while迴圈類似,while迴圈能實現的指令碼 until同樣也可以實現,但區別是while迴圈在條件為真時繼續執行迴圈,而until則是在條件為假時執行迴圈。

until 條件測試操作

do

命令序列

done

Shell程式設計之迴圈語句

三 until語句 總結 作用 讀取不同的變數值,用來逐個執行同一組命令 使用規則 使用for迴圈語句時,需要指定乙個變數及可能的取值列表,針對每個不同的取值重複執行相同的命令序列,直到變數值用完退出迴圈。取值列表 稱為for語句的執行條件,其中包括多個屬性相同的物件,需要預先指定 如通訊錄 ip黑...

shell指令碼程式設計之迴圈語句

在執行指令碼時重複執行一系列的命令是很常見的,這時我們就需要使用迴圈語句來達到這個目的。一 for命令 格式 for 變數 in 列表 do 迴圈體done for命令會遍歷列表中的每乙個值,並且在遍歷完成後退出迴圈。列表形式有以下幾種 1 在命令中定義的一系列的值 2 變數 3 命令 4 目錄 5...

shell程式設計之if語句

目錄4.other eq 等於,如 if a eq b ne 不等於,如 if a ne b gt 大於,如 if a gt b ge 大於等於,如 if a ge b lt 小於,如 if a lt b le 小於等於,如 if a le b 小於 需要雙括號 如 a b 小於等於 需要雙括號 如...