在實際工作環境中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的物件不一樣,其他命令完全相同。如:根據伺服器清單檢查各個主機的存活狀態;根據ip位址黑名單設定拒絕訪問的防火牆策略等。
這樣繁瑣的重複任務時,if語句已經不能滿足需求。則我們需要for迴圈語句。
使用for迴圈時,需要指定乙個變數及可能的取值列表,針對每乙個不同的取值重複執行相同的命令序列,直到變數值用完退出迴圈。在這裡,「取值列表」稱為for語句的執行條件,其中包括多個屬性相同的物件,需要預先指定(如上面提到的ip黑名單)。
for 變數名 in 取值列表
do命令序列
done
for語句的操作物件為使用者指定的變數,並通過in關鍵字為該變數預先設定了乙個取值列表,多個取值之間以空格進行分隔。位於do。。。。。done之間的命令序列稱為「迴圈體」,其中的執行語句需要引用變數以完成相對的任務。
for語句的執行流程:首先將列表中的第乙個取值賦予給變數,並執行do。。。。done迴圈體中的命令序列。然後將列表中的第二個取值賦值給變數,並執行迴圈體中的命令序列。。。。。。依次類推,直到列表中的所有取值用完,然後將跳至done語句,表示迴圈結束。
事例1:
根據姓名列表批量新增使用者:根據員工列表,在linux伺服器中新增相應的使用者賬號。初始密碼為123456.
#vi adduser.sh
#!/bin/bash
ulist=$(cat /root/users.txt)
for uname in $ulist
douseradd $uname
echo 「123456」 | passwd --stdin katex parse error: expected 'eof', got '&' at position 7: uname &̲>/dev/null don…(cat /root/iplist.txt)
for ip in $hlist
doping -c 3 $ip &> /dev/null
if [ $? -eq 0 ]
then
echo 「host $ip is up」
else
echo 「host $ip is down」
fidone
指令碼中的iplist是ip位址檔案。
事例3:批量新增使用者
#!/bin/bash
#本指令碼用來批量建立系統使用者
echo 『成功建立使用者:』 > /root/user_name
read -ep 『請輸入要建立的使用者數量:』 num
for i inseq 1 $num
dogrep(篩選)" user-$i" /etc/passwd > /dev/null 2>&1
if [ ?−n
e0];
then
user
addu
ser−
? -ne 0 ]; then useradd user-
?−ne0]
;the
nuse
radd
user
−i > /dev/null 2>&1
if [ ?−e
q0];
then
echo
"use
r−
? -eq 0 ]; then echo "user-
?−eq0]
;the
nech
o"us
er−i" >> /root/user_name
echo "user-i"∣
pass
wdus
er
−i"| passwd user-
i"∣pas
swdu
ser−
i --stdin > /dev/null 2>&1
echo 「user-i建立
成功!"
fiel
seec
ho"u
ser−
i 建立成功!" fi else echo "user-
i建立成功!
"fie
lsee
cho"
user
−i 使用者已存在,建立失敗!」
fidone
cat /root/user_name
迴圈語句python Python 迴圈語句
sonnetoab勝於藍 優秀個人部落格 gra nnet qq.comoab勝於藍 優秀個人部落格oab勝於藍 優秀個人部落格 八皇后問題 迴圈遞迴法 oab勝於藍 優秀個人部落格 queen problem with recurison board size 8 def under attack...
迴圈for語句 if語句
if語句 if 表示式 else if 表示式 for迴圈 for var i 0 i 10 i if語句 if 表示式 else if 表示式 for迴圈 for var i 0 i 10 i while迴圈 while 表示式 使用場景 for 次數確定的時候使用 while 直到滿足摸個條件的...
for迴圈語句
迴圈語句 for迴圈,while迴圈,do.while迴圈。for迴圈格式 for 初始化語句 判斷條件語句 控制條件語句 執行流程 a 執行初始化語句 b 執行判斷條件語句,看其返回值是true還是false 如果是true,就繼續執行 如果是false,就結束迴圈 c 執行迴圈體語句 d 執行控...