Shell学习
Posted Will.Guo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell学习相关的知识,希望对你有一定的参考价值。
第十一章 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(中间不能有空格)
取值
name,更严谨一点应写为$name为什么$name呢?eg.name=”sue”echo
nameHello (本意想输出sue Hello,但是shell语法将nameHello理解为一个变量,所以应用$nameHello)
脚本或者命令的返回值: $?
取消变量或者数组(整体或某个元素): 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!
以上是关于Shell学习的主要内容,如果未能解决你的问题,请参考以下文章