第十一章 Shell編程概述
shell有很多種,目前最流行的是Bash shell。
- 別名 : alias
- 任務前後臺切換:bg、fg、jobs、contrl+z(任務暫停,然後用jobs查看暫停的任務,bg轉爲後臺運行,fg轉爲前臺運行)
- 聲明變量 :declare typeset
- break; continue
- 執行命令來取代當前的shell:exec
- 退出 exit 殺死進程 kill
- 全局變量 export(變量能夠被子進程識別)
- 聲明稱局部變量 local
- 測試表達式 test
第12章 Bash Shell的安裝
第13章 Shell編程基礎
shell中變量命名
不能以數字開頭
不能以特殊字符開頭(*abc不可以 , _abc可以)
不能喝shell中預設變量重名
不能是shell的關鍵字
變量
定義變量 name=john(中間不能有空格)
取值
腳本或者命令的返回值: $?
取消變量或者數組(整體或某個元素): unset
引用
- 部分引用——雙引號:特殊字符仍然被解析,如echo “$name” 返回john
- 全引用——單引號(一行語句中只能有一個全引用):任何字符都當做普通字符,如echo ‘$name’ 返回$name
- 命令替換 ——反引號(“) ,等價於$()
例子: 腳本範例
檢測服務器存活
#!/bin/bash
TIMESTAMP=`date + %Y%m%d%H%M%S`
CURRENT_HTML=/var/www/html/${TIMESTAMP}.html
CURRENT_INDEX=/var/www/html/index.html
LN=/bin/ln
RM=/bin/rm
SERVER_LIST=server_list
cat <<EOF > $CURRENT_HTML
<html>
<head>
<title>Server Alive Monitor</title>
</head>
<body>
`date`
<table width="50%"border="1" cellpading="1" cellspaceing="0" align="center">
<caption>
<h2>Server Alive Status</h2>
</caption>
<tr>
<th>Server IP</th><th>Server Status</th>
</tr>
EOF
while read SERVERS
do
ping $SERVERS -c 3
if [ $? -eq 0 ]; then
STATUS=OK
COLOR=blue
else
STATUS=FALSE
COLOR=red
fi
echo "<tr><td>$SERVERS</td><td><font color=$COLOR>$STATUS</font></td></tr>" >> $CURRENT_HTML
done < $SERVER_LIST
cat <<EOF >> $CURRENT_HTML
</table>
</body>
</html>
EOF
$LN -sf $CURRENT_HTML $CURRENT_INDEX
啓動Apache httpd服務 , 添加系統crontab任務,每分鐘執行一次shell , 可在網頁查看服務器狀態
Got it!