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