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