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!

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