shell 迴圈語句

2022-01-10 06:17:39 字數 2792 閱讀 5262

1、 shell中的迴圈語句

迴圈語句,主要是為了簡化重複動作**,在運維方面主要用於重複某項動作,例如批量建立使用者,在shell中主要有兩種 while迴圈 與 for 迴圈。

1、while迴圈

while 迴圈主要用於無限次的迴圈情況,例如登入認證,你不知道多少次可以登入成功,當然可以認為限制登入次數。

1.1、while迴圈 的結構

#!/bin/bash

while true

do echo "哈哈哈哈哈哈哈哈哈" #迴圈體

done

1.2、 while迴圈指令碼示例

1)、while迴圈從檔案讀取使用者,增加使用者,並且設定密碼。

1、建立使用者檔案

[root@localhost ~]# cat >123.txt<<-eof

love1

love2

love3

love4

love5

eof2、while 指令碼

#!/bin/bash

rm -rf info.txt &>/dev/null

while read user

do id $user &>/dev/null

if [ $? -ne 0 ];then

useradd $user &>/dev/null

pwd=`mkpasswd -l 10`

echo $pwd | passwd --stdin $user &>/dev/null

echo "$user:$pwd"|tee -a info.txt

echo " 使用者 $user 新增成功..."

else

echo "$user 已經存在..."

fidone<123.txt

2)批量新增指定字首,數量的使用者

#!/bin/bash

read -p "請輸入使用者字首,密碼,數量:" pre pass num

if [[ ! $num =~ ^[0-9]+ ]];then

ehco "請輸入數字"

ficat if [ $? -ne 0 ];then

useradd $pre$i

echo "使用者 $pre$i 建立成功..."

echo $pass|passwd --stdin $pre$i &>/dev/null

else

continue

echo "使用者 $pre$i 已經存在..."

fidone

break

;;n|no)

exit 1

;;*) echo "錯誤輸入,請重新輸入..."

esac

done

3)、批量刪除使用者

#!/bin/bash

read -p "請輸入使用者字首,數量:" pre num

cat if [ $? -eq 0 ];then

userdel -r $pre$i

echo "使用者 $pre$i 刪除成功..."

else

continue

echo "使用者 $pre$i 不存在..."

fidone

break

;;n|no)

exit 1

;;*) echo "錯誤輸入,請重新輸入..."

esac

done

2、for 迴圈

for 迴圈主要用於有限次數迴圈,例如測試乙個網段內地ip是否通達,又或者我們要迴圈迭代乙個檔案的內容,我們可以for迴圈來完成工作

2.1 for 迴圈結構

for i in `seq 5` #可迴圈迭代的物件,例如乙個開啟的檔案,等

doecho "haha $i" #迴圈體,for迴圈從中依次取值

done

2.2 for迴圈指令碼

1)檢測子網段內ip的通達性

#!/bin/bash

for i in

do &

done

wait

cat ip.txt

2)批量修改子網段ssh登陸密碼

#!/bin/bash

for i in do&

done

3)、批量新增使用者

#!/bin/bash

read -p "請輸入使用者字首,密碼,數量:" pre pass num

if [[ ! $num =~ ^[0-9]+ ]];then

ehco "請輸入數字"

ficat if [ $? -ne 0 ];then

useradd $pre$i

echo "使用者 $pre$i 建立成功..."

echo $pass|passwd --stdin $pre$i &>/dev/null

else

continue

echo "使用者 $pre$i 已經存在..."

fidone

break

;;n|no)

exit 1

;;*) echo "錯誤輸入,請重新輸入..."

esac

done

2、迴圈中用到的一些其他shell命令
1、break 結束迴圈

2、exit 退出整個指令碼

3、continue 忽略本次迴圈剩餘的**,直接進⾏下一次迴圈

shell迴圈語句

一般的迴圈結構 for 變數名 in 列表 do 迴圈體done 迴圈執行機制 依次將列表中的元素賦值給變數名,每次賦值後執行一次迴圈體,直到列表中的元素耗盡,迴圈結束 一般的迴圈結構 while condition do 迴圈體done condition 迴圈控制條件 進入迴圈之前,先做一次判 ...

shell程式設計 迴圈語句

while語句 while語句格式 while 表示式 do command command done while 和 if 的條件表示式完全相同,也是 或commad或test while 表示式 if 表示式 表示式值為0,則迴圈繼續 表示式值為0,then 表示式值為非0,則迴圈停止 表示式值...

shell程式設計 迴圈語句

while語句 while語句格式 while 表示式 do command command done while 和 if 的條件表示式完全相同,也是 或commad或test while 表示式 if 表示式 表示式值為0,則迴圈繼續 表示式值為0,then 表示式值為非0,則迴圈停止 表示式值...