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