讀取不同的變數值,用來逐個執行同一組命令
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 小於等於 需要雙括號 如...