Shell學習

第十一章 Shell編程概述

shell有很多種,目前最流行的是Bash shell。

  1. 別名 : alias
  2. 任務前後臺切換:bg、fg、jobs、contrl+z(任務暫停,然後用jobs查看暫停的任務,bg轉爲後臺運行,fg轉爲前臺運行)
  3. 聲明變量 :declare typeset
  4. break; continue
  5. 執行命令來取代當前的shell:exec
  6. 退出 exit 殺死進程 kill
  7. 全局變量 export(變量能夠被子進程識別)
  8. 聲明稱局部變量 local
  9. 測試表達式 test

第12章 Bash Shell的安裝

第13章 Shell編程基礎

shell中變量命名
不能以數字開頭
不能以特殊字符開頭(*abc不可以 , _abc可以)
不能喝shell中預設變量重名
不能是shell的關鍵字

變量

定義變量 name=john(中間不能有空格)
取值 name$name$nameeg.name=sueecho nameHello (本意想輸出sue Hello,但是shell語法將nameHello理解爲一個變量,所以應用${name}Hello)


腳本或者命令的返回值: $?
取消變量或者數組(整體或某個元素): unset

引用

  1. 部分引用——雙引號:特殊字符仍然被解析,如echo “$name” 返回john
  2. 全引用——單引號(一行語句中只能有一個全引用):任何字符都當做普通字符,如echo ‘$name’ 返回$name
  3. 命令替換 ——反引號(“) ,等價於$()

例子: 腳本範例

檢測服務器存活


#!/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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章