自動化運維必須要學的Shell腳本之——循環語句(for、while和until循環)


1. 循環前先了解echo的使用

1.1 echo -n 表示不換行輸出

1.2 echo -e 輸出轉義字符,將轉義后的內容輸出到屏幕上

常見的轉義字符有:

 

1.2.1 \b 相當於退格鍵

轉義后相當於退格鍵(backspace),但是前提是“\b”存在字符。“\b”表示刪除前一個字符,“\b\b”表示刪除前面兩個字符。

 

1.2.2 \c 不換行輸出

不換行輸出,在“\c”后面不存在字符的情況下,作用相當於echo -n,但是當“\b”后面仍然存在字符時,“\c”后面的字符將不會被輸出。

1.2.3 \n 換行輸出

換行輸出,被輸出的字符從"\n"出開始另起一行。

1.2.4 \f 、\v 換行輸出

換行輸出,但是換行后新行的開頭位置連接着上一行的行尾。

“\v”的輸出結果和“\f” 一樣

1.2.5 \t 制表符顯示

轉義后表示插入橫向制表符,即tab。

1.2.6 \r 光標移至行首不換行

光標移至行首,但是不換行,相當於使用“\r”之后的字符覆蓋“\r”之前同等長度的字符,但是當“\r”后面不存在任何字符時,“\r”前面的字符不會被覆蓋;當“\r”后面存在的字符大於前面時,“\r”前面的字符全部會被后面替代,按后面字符的長度。

1.2.7 \\ 表示符號本身

在轉義符前面加入轉義符,代表將后面的轉義符轉義為符號本身,也就是 \ 。

案例:使用echo直接將yum本地源的配置命令重定向到配置文件內。

1.2.8 echo 的其他用法,刪除和獲取字符串的內容

刪除字符的方法

截取字符的方法:

增加字符串的方法:

2. for循環

for循環經常使用在已經知道要進行多少次循環的場景

1.語法:

for 變量名in 取值列表

do

命令序列

done

2.練習實例:循環出0到10之間(包括10)的整數

實例:由於系統上面的各種賬號都是寫在/etc/passwd內的第一個字段,通過管道命令cut識別出單純的賬號名稱號,以id分別檢查用戶的標識符和特殊參數。知識點:截取文件的字段。這個操作還可以用在每個賬號的刪除。

3. while循環和until循環

while循環可以不斷的執行某個程序,直到用戶設置的條件完成為止,所以重點是條件,這種不定循環最常見的就是下面這兩種格式了。
1.格式:
while循環:while的中文是【當…時】,所以這種方式說的是,當判斷式/命令序列的條件成立時,就進行循環,直到命令序列/程序段落的條件不成立才停止。

4. 嵌套循環

在循環內部再使用一個循環稱為嵌套循環

#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}為外部循環
for((j=1;j<4;j++))
do
echo -e "\t此${j}為內部循環"
done
done

5. 循環語句中的break、exit和continue

5.1 break的使用

當滿足條件的情況下break會跳出當前循環體,如下

#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}為外部循環
for((j=1;j<4;j++))
do
if [ $j -eq 3 ] <------如果j的值為3
then
break <------跳出當前循環(內部)
fi
echo -e "\t此${j}為內部循環"
done
done

5.2 exit的使用

當滿足條件的情況下exit會直接退出當前腳本,如下

#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}為外部循環
for((j=1;j<4;j++))
do
if [ $j -eq 3 ] <------如果j的值為3
then
exit <------結束當前腳本
fi
echo -e "\t此${j}為內部循環"
done
done

5.3 continue的使用

continue中止某次循環中的命令,但不會完全中止整個命令,如下:

#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}為外部循環
for((j=1;j<4;j++))
do
if [ $j -eq 2 ] <------如果j的值為2
then
continue <------中止循環中本次的命令,但不會完全中止整個循環或腳本
fi
echo -e "\t此${j}為內部循環"
done
done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM