shell指令碼之迴圈語句
阿新 • • 發佈:2022-03-31
目錄
1、
2、
2.1
2.2
2.3
2.4
2.5
2.6
2.7
一、echo的用法
1、echo -n
表示不換行輸出
2、echo -e
輸出轉義字元,將轉義後的內容輸出到螢幕上
常見的轉義字元有:
2.1 \b
相當於退格鍵
轉義後相當於退格鍵(backspace),但是前提是“\b”存在字元。“\b”表示刪除前一個字元,“\b\b”表示刪除前面兩個字元
2.2 \c
不換行輸出
不換行輸出,在“\c”後面不存在字元的情況下,作用相當於echo -n
,但是當“\b”後面仍然存在字元時,“\c”後面的字元將不會被輸出
2.3 \n
換行輸出
換行輸出,被輸出的字元從"\n"出開始另起一行
2.4 \f
、\v
換行輸出
換行輸出,但是換行後新行的開頭位置連線著上一行的行尾
2.5 \t
製表符顯示
轉義後表示插入橫向製表符,即tab
2.6 \r
游標移至行首不換行
游標移至行首,但是不換行,相當於使用“\r”之後的字元覆蓋“\r”之前同等長度的字元,但是當“\r”後面不存在任何字元時,“\r”前面的字元不會被覆蓋;當“\r”後面存在的字元大於前面時,“\r”前面的字元全部會被後面替代
2.7 \\
表示符號本身
在轉義符前面加入轉義符,代表將後面的轉義符轉義為符號本身,也就是 \
二、for迴圈(遍歷)
1、 格式
for 變數名 in 取值列表 do 命令序列 done
for i in {1..10} {1..10..2}
for i in $(seq 1 10) $(seq 1 2 10)
for ( (i=1; i<=10; i++) ) ( (i=1; i<=10; i+=2) )
do
echo $i
done
for ( (i=1; i<=10; i++)) ;do echo $i ;done
2、 例項操作一
取值列表的多種表示方法
for迴圈可在同一行表示
for迴圈中,do done的相同作用的表示方法
4、 例項操作三:根據IP地址檢查主機狀態
#!/bin/bash
#Check host status based on IP address
for i in `cat /root/ipadds.txt`
do
ping -c 3 -i 0.5 -w 2 $i &> /dev/null
if [ $? -eq 0 ];then
echo "$i is online"
else
echo "$i is offline"
fi
done
三、while迴圈(迭代)
while迴圈可以不斷的執行某個程式,直到使用者設定的條件完成為止,所以重點是條件,這種不定迴圈最常見的就是下面這兩種格式了。
1.格式:
while迴圈:while的中文是【當…時】,所以這種方式說的是,當判斷式/命令序列的條件成立時,就進行迴圈,直到命令序列/程式段落的條件不成立才停止。
while [ 條件測試操作 ]
do #do代表迴圈的開始
判斷式/命令序列
done #done代表迴圈的結束
2、例項操作:猜價格遊戲,要求在0-999數字範圍內猜價格,並有提示資訊,統計最終猜測的次數
#!/bin/bash
a=0
b=1
price=$[RANDOM%1000]
while [ $a -eq 0 ]
do
read -p "請輸入:" c
if [ $c -eq $price ];then
echo "答對了,共答了 $b 次"
a=2
elif [ $c -lt $price ];then
echo "猜低了"
let b++
elif [ $c -gt $price ];then
echo "猜高了"
let b++
fi
done
四、until迴圈
這種方式恰恰和while迴圈相反,它指的是當判斷式/命令序列的條件成立時,就終止迴圈,否則就會持續迴圈程式段落。
1、格式
until [ 條件測試操作 ]
do
判斷式/命令序列
done
2、例項操作一:計算1-50的和
#!/bin/bash
a=1
b=0
until [ $a -gt 50 ]
do
b=$(($b+$a))
let a++
done
echo "得出的和為:$b"