作者: 字體:[增加 減小] 類型:轉(zhuǎn)載
linux Shell學(xué)習(xí)筆記最后一節(jié),這節(jié)是對(duì)前面章節(jié)的小結(jié),學(xué)習(xí)shell編程的朋友可以參考下,
linux Shell學(xué)習(xí)筆記最后一節(jié),溫故與知新
。腳本編寫技巧
腳本文件名命名規(guī)則
文件名的字符包括
字母、數(shù)字、"."、"_"和"-", 注意:腳本的文件名命名不能以數(shù)字開(kāi)頭。
腳本文件名的命名,盡量使用英文單詞、詞組或短句的縮寫。
腳本版本管理:
腳本作用.主版本號(hào).修改次數(shù).shell類型
變量命名規(guī)范
變量名可以由數(shù)字和字母組成
變量名采用全部英文字符小寫的方式
變量名稱盡量使用縮寫,最好不要超過(guò)6個(gè)字符
${變量名} 例:${port},${ipaddr}…
腳本代碼注釋規(guī)范
腳本代碼注釋可以使用"#"和";(分號(hào))"兩種方式進(jìn)行注釋。#一般由于描述性的注釋,旨在說(shuō)明代碼的作用或怎么使用。
而;通常用于示例性的注釋,特別是在一些配置文件中常常會(huì)用到,因此我們沿用這兩種方式來(lái)對(duì)我們的腳本進(jìn)行注釋。
引用符號(hào)使用規(guī)范
盡量少用單引號(hào)
對(duì)極個(gè)特殊字符進(jìn)行屏蔽特殊含義時(shí),使用\(反斜線)進(jìn)行屏蔽
使用帶引號(hào)進(jìn)行屏蔽字符時(shí),單引號(hào)內(nèi)一般不適用其他引用符號(hào),除非是打印特殊符號(hào)本身。
使用反引號(hào)進(jìn)行執(zhí)行一個(gè)shell命令時(shí),反引號(hào)內(nèi)一般加其他引用符號(hào)。
腳本函數(shù)定義規(guī)范
變量名可以由數(shù)字和字母組成
使用駝峰命名法(從第二個(gè)單詞開(kāi)始,每個(gè)單詞首字母大寫)
名字盡量不使用縮寫,除非它是眾所周知的
名字可以有兩個(gè)或三個(gè)單詞組成,但通常不應(yīng)多于三個(gè)
文本輸出排版
第一天課后作業(yè)
1、grep "20081011" text.txt 取出這一天的數(shù)據(jù)
2、grep "200804" text.txt 取出這一個(gè)月的數(shù)據(jù)
3、grep "200806" text.txt | grep -v "-" 取出一個(gè)月的上漲數(shù)據(jù)
4、grep "200807" text.txt | grep -v "-" | wc -l 列出有幾天是上漲個(gè)數(shù),帶統(tǒng)計(jì)
5、grep "200808" text.txt | sort -k5 -n | tail -1 判斷上漲,然后tail取最后一行
grep "200808" text.txt | sort -k5 -r |head -1 判斷上漲,然后head取第一行
6、grep "200810" text.txt | awk ‘{if($4>0){print $1,$5}}‘ 取出一月中上漲數(shù)據(jù)時(shí)間和上漲幅
7、grep "200811" text.txt | awk ‘{if($4>5 && $4<20){print $0}}‘ 判斷區(qū)間取出整行
腳本代碼實(shí)例分析1
編寫一個(gè)shell腳本,執(zhí)行腳本后自動(dòng)ping以下地址:
192.168.1.1,192.168.1.31
以上IP地址直接寫在腳本之中,
電腦資料
《linux Shell學(xué)習(xí)筆記最后一節(jié),溫故與知新》(http://m.lotusphilosophies.com)。執(zhí)行完成后,應(yīng)顯示能夠ping通的IP地址和不能夠ping通的IP地址
#!/bin/bash
if ping 192.168.1.1 -c 1
then
echo "192.168.1.1 online"
else
echo "192.168.1.1 offline"
fi
if ping 192.168.1.31 -c 1
then
echo "192.168.1.31 online"
else
echo "192.168.1.31 offline"
fi
腳本代碼實(shí)例分析2
修改分析1,但是從iplist.txt中讀取IP
#!/bin/bash
for ip in `cat iplist.txt`
do
if ping $ip -c 1
then
echo "${ip} online"
else
echo "${ip} offline"
fi
done
腳本代碼實(shí)例分析3
修改分析2,去除無(wú)用的信息
#!/bin/bash
for ip in `cat iplist.txt`
do
if ping $ip -c 1 >/dev/null 2>&1
then
echo "${ip} online"
else
echo "${ip} offline"
fi
done
腳本代碼實(shí)例分析4
修改分析3,生成記錄
#!/bin/bash
>hoststatus.txt
for ip in `cat iplist.txt`
do
if ping $ip -c 1 >/dev/null 2>&1
then
echo "${ip} online" |tee -a hoststatus.txt
else
echo "${ip} offline" |tee -a hoststatus.txt
fi
done
腳本代碼實(shí)例分析5
產(chǎn)生一個(gè)IP地址池,生成255個(gè)IP,并修改分析4,實(shí)現(xiàn)多線程ping
#!/bin/bash
>iplist
for ip in `seq 1 255`
do
echo "192.168.1.${ip}" >>iplist
done
#!/bin/bash
>hoststatus.txt
>temp
fastping()
{
if ping ${1} -c 1 >/dev/null 2>&1
then
echo "${ip} online" |tee -a temp
else
echo "${ip} offline" |tee -a temp
fi
}
for ip in `cat iplist.txt`
do
fastping $ip &
done
wait
sort -t. -k4 -n temp >hoststatus.txt
rm temp
temp ./ping.sh 測(cè)試一個(gè)腳本執(zhí)行多久