bash編程又稱bash腳本和shell腳本,是一種有多條線終端命令構(gòu)成的腳本程序,所有可以直接在終端界面里運(yùn)行的命令,都可以通過腳本來執(zhí)行
我們拿就拿ping命令來說,怎么使用ping命令對局域網(wǎng)進(jìn)行掃描,識別當(dāng)前網(wǎng)絡(luò)下活躍主機(jī),下面筆者將通過bash編程來簡單的解釋
1.在Linux中創(chuàng)建一個.sh程序? ? ? ? ?命令:touch xxxx.sh????
2.啟用編輯模式vim/nano編寫腳本

在第一行:#/bin/bash? ? ?會讓終端界面調(diào)用Bash解釋器
第二行:if判斷語句
它的寫法很簡單
if [條件表達(dá)式]
then
..............
else
..............
相當(dāng)于其他語言if判斷語句,拿java來說,上面的if判斷語句就等同于
if(條件表達(dá)式){
..................
}else{.
}
then即相當(dāng)于大括號
條件表達(dá)式[" $1" == " " ]? ?這句話的意識是說[ "當(dāng)?shù)谝粋€參數(shù)為空時" ]? ? ?$1表示傳入的第一個參數(shù)。==是邏輯判斷符
下面的echo "........",用于像終端界面輸出提示,當(dāng)?shù)谝粋€傳輸參數(shù)為空的時候就會顯示echo “ ”中的內(nèi)容,如果不為空就顯示else里面的內(nèi)容
但光有if語句是不行的,即使傳遞了一個參數(shù),這個程序也不具備相應(yīng)的處理功能,因?yàn)槲覀円綔y某個“c類網(wǎng)段”的全部在線主機(jī),所以需要以循環(huán)的方式ping那些末尾為1~254(IPv4地址的最后一個八位組)的全部IP
for循環(huán)語句
for x in `seq 1 254`;
等同于java中
for(int x=1;x<=254;x++){
}
當(dāng)我們傳遞參數(shù)時,例如當(dāng)我們在終端執(zhí)行./xxxx.sh 192.168.20時腳本程序會從192.168.20.1開始直到運(yùn)行到192.168.20.254時結(jié)束
(這里說一下,為什么需要以./xxxx.sh來運(yùn)行程序。應(yīng)為當(dāng)前目錄沒有被環(huán)境變量PATH收錄所有不能直接以xxx.sh運(yùn)行)
for x in `seq 1 254`;后面跟do表示執(zhí)行,do下面就是要執(zhí)行的內(nèi)容了
ping -c $1.$x
我們希望程序在for循環(huán)語句的每次迭代過程中都ping一個ip地址。根據(jù)相關(guān)使用說明可知,ping命令的-c選項(xiàng)可以限定它ping某臺既定主機(jī)的探測次數(shù)。因此-c選項(xiàng)設(shè)定為1,讓程序?qū)γ總€主機(jī)只ping一次
$1.$x:$1表示傳入的第一個參數(shù),$x表示for循環(huán)使用的循環(huán)變量
但是這樣ping出來的效果好像不是很理想,因?yàn)槲覀冎恍枰涝诰€的主機(jī)就行了
所以我們在ping -c $1.$x后面加上grep篩選命令
ping -c $1.$x | grep "64 bytes from"
如此一來就可以只看在線主機(jī)的ip地址了

值得注意的是在保存腳本過后,需要使用chmod命令進(jìn)行權(quán)限處理