shell腳本的3種回圈以及相關內容
- 一、for陳述句
- 1.1 for陳述句的結構
- 1.2 for陳述句的實體
- 二、while回圈
- 2.1 while陳述句的結構
- 2.2 while陳述句應用示例
- 三、until陳述句
- 3.1 until陳述句的結構
- 3.2 until陳述句應用示例
- 四、常用轉義字符
- 五、補充:break和continue
- 5.1 break命令
- 5.2 continue命令
一、for陳述句
1.1 for陳述句的結構
讀取不同的變數值,用來逐個執行同一組命令,

三種簡單的for陳述句的表達方式:
方法一:(默認的取值是空格、tab、換行)
for i in {1..10 } 表示for 陳述句中的取值串列在1到10中取值,
for i in {1..10. .2} 表示for 陳述句中的取值串列在1到10中+2取值,即1、3、5、7、9,
方法二:
for i in $(seq 1 10) 表示for 陳述句中的取值串列在1到10中取值,
for i in $(seq1210) 表示for 陳述句中的取值串列在1到10中+2取值,即1、3、5、7、9,
方法三:
for ( (i=1; i<=10; i++) ) 表示for 陳述句中的取值串列在1到10中取值,
for ((i=1; i<=10; i+=2) ) 表示for 陳述句中的取值串列在1到10中+2取值,即1、3、5、7、9,
1.2 for陳述句的實體
1、簡單的for陳述句實體:
#!/bin/bash
#簡單for陳述句示例
for ((i=1; i<=3;i++))
do
echo "i"
echo "$[ $i + 1]"
echo "----------------"

2、批量添加用戶
要求: ◆用戶名存放在users.txt檔案中,每行一個
◆初始密碼均設為123456
◆驗證腳本
touch users.txt #創建要求的檔案
#!/bin/bash
#添加用戶
for ((i=1; i<=5; i++)) #for回圈創建5個用戶
do
useradd meng$i #添加用戶,用戶名為meng1、meng2、meng3等
echo "123456" | passwd --stdin meng$i # 給添加的用戶設定密碼
echo "meng$i" >> /root/users.txt #把用戶名存放到指定檔案中
done

3、根據IP地址檢查主機狀態
◆IP地址存放在ipadds.txt檔案中,每行一個
◆使用ping命令檢測各主機的連通性
方法一:
#!/bin/bash
for a in {1..255}
do
ping -c 3 -i 0.2 -W 3 "192.168.1.$a" &> /dev/null
if [ $? -eq 0 ]
then
echo "Host 192.168.1.$a is up."
else
echo "Host 192.168.1.$a is down."
fi
done
echo "--------------------"
方法二:
#!/bin/bash
b=1
while [ $b -le 255 ]
do
ping -c 3 -i 0.2 -W 3 "192.168.1.$b" &> /dev/null
if [ $? -eq 0 ]
then
echo "Host 192.168.1.$b is up."
else
echo "Host 192.168.1.$b is down."
fi
let b++
done
二、while回圈
2.1 while陳述句的結構
重復測驗某個條件,只要條件成立反復執行
while 條件測驗操作
do
命令序列
done

2.2 while陳述句應用示例
1、批量添加用戶
◆用戶名稱以stu開頭,按數字順序進行編號
◆共添加20個用戶,即stu1、 stu2、… ;stu20
◆初始密碼均設為123456
#!/bin/bash
i=1
while [ $i le 20 ]
do
useradd stu$i
echo "123456" | passwd --stdin stu$i
let i++
done
2、猜商品價格游戲
◆通過變數RANDOM獲得亂數
◆提示用戶猜測并記錄次數,猜中后退出回圈
#!/bin/bash
b=0
c=0
a =$[$RANDOM%1000]
while [$b lt 1 ]
do
let c++
read -p "請你輸入猜測的價格(1-1000)" num
if [ a lt $num ];then
echo "猜小了,再來一次,"
elif [ $num -gt $a ];then
echo "猜大了,再來一次,"
elif [ $num -eq $a ];then
echo "恭喜你,猜對了!"
b=2
fi
done
echo "你一共猜了$c次!"
注:$RANDOM是隨機值,范圍為1-65535

三、until陳述句
3.1 until陳述句的結構
重復測驗某個條件,只要條件不成立則反復執行,
until 條件測驗操作
do
命令序列
done

3.2 until陳述句應用示例
1、計算1~50的和值
◆通過回圈累加的方式計算1~50的和值
#!/bin/bash
#1-50的和
sim=0
i=1
until [ $i -gt 50 ]
do
sum=$[$sum+$i]
let i++
done
echo "1-50的和為$sum!"

四、常用轉義字符
echo -n 表示不換行輸出
echo -e 輸出轉義字符,將轉義后的內容輸出到螢屏上
常用的轉義字符如下: \b 轉義后相當于按退格鍵(backspace),但前提是"\b"后面存在字符;"\b"表示洗掉前一個字符,"\b\b"表示洗掉前兩個字符,
\c 不換行輸出,在"\c"后面不存在字符的情況下,作用相當于 echo -n; 但是當"\c"后面仍然存在字符時,"\c"后面的字符將不會被輸出,
\n 換行,被輸出的字符從"\n"處開始另起一行,
\f 換行,但是換行后的新行的開頭位置連接著上一行的行尾;
\v 與\f相同;
\t 轉以后表示插入tab,即橫向制表符;
\r 游標移至行首,但不換行,相當于使用"\r"以后的字符覆寫"\r"之前同等長度的字符;但是當"\r"后面不存在任何字符時,"\r"前面的字符不會被覆寫
\\ 表示插入"\"本身;
五、補充:break和continue
5.1 break命令
break命令是跳出單個回圈
實體:
#!/bin/bash
#break的示例
for ((a=1; a<5; a++))
do
echo "outer loop: $a"
for ((b=1; b<=50;b++))
do
if [ $b -eq 5 ]
then
break
fi
echo "inter loop:$b"
done
done

5.2 continue命令
continue命令是終止某次回圈中的命令,但不會完全中止整個命令
#!/bin/bash
#continue的示例
for ((a=1; a<=15; a++))
do
if [ $a -gt 5 ] && [ $a -lt 10 ]
then
continue
fi
echo "current value: $a"
done

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/239584.html
標籤:其他
上一篇:ARFoundation系列講解-15ARWorldMap二
下一篇:聊一聊我的二〇二〇
