1. 程式人生 > 其它 >shell指令碼之迴圈語句

shell指令碼之迴圈語句

目錄

一、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"