脚本编写技巧
脚本文件名命名规则
文件名的字符包括
字母数字_和 注意脚本的文件名命名不能以数字开头
脚本文件名的命名尽量使用英文单词词组或短句的缩写
脚本版本管理
脚本作用主版本号修改次数shell类型
变量命名规范
变量名可以由数字和字母组成
变量名采用全部英文字符小写的方式
变量名称尽量使用缩写最好不要超过个字符
${变量名} 例${port}${ipaddr}…
脚本代码注释规范
脚本代码注释可以使用#和;(分号)两种方式进行注释#一般由于描述性的注释旨在说明代码的作用或怎么使用
而;通常用于示例性的注释特别是在一些配置文件中常常会用到因此我们沿用这两种方式来对我们的脚本进行注释
引用符号使用规范
尽量少用单引号
对极个特殊字符进行屏蔽特殊含义时使用\(反斜线)进行屏蔽
使用带引号进行屏蔽字符时单引号内一般不适用其他引用符号除非是打印特殊符号本身
使用反引号进行执行一个shell命令时反引号内一般加其他引用符号
脚本函数定义规范
变量名可以由数字和字母组成
使用驼峰命名法(从第二个单词开始每个单词首字母大写)
名字尽量不使用缩写除非它是众所周知的
名字可以有两个或三个单词组成但通常不应多于三个
文本输出排版
第一天课后作业
grep texttxt取出这一天的数据
grep texttxt取出这一个月的数据
grep texttxt | grep v 取出一个月的上涨数据
grep texttxt | grep v | wc l列出有几天是上涨个数带统计
grep texttxt | sort k n | tail 判断上涨然后tail取最后一行
grep texttxt | sort k r |head 判断上涨然后head取第一行
grep texttxt | awk {if($>){print $$}}取出一月中上涨数据时间和上涨幅
grep texttxt | awk {if($> && $<){print $}}判断区间取出整行
脚本代码实例分析
编写一个shell脚本执行脚本后自动ping以下地址
以上IP地址直接写在脚本之中执行完成后
应显示能够ping通的IP地址和不能够ping通的IP地址
#!/bin/bash
if ping c
then
echo online
else
echo offline
fi
if ping c
then
echo online
else
echo offline
脚本代码实例分析
修改分析但是从iplisttxt中读取IP
#!/bin/bash
for ip in `cat iplisttxt`
do
if ping $ip c
then
echo ${ip} online
else
echo ${ip} offline
fi
done
脚本代码实例分析
修改分析去除无用的信息
#!/bin/bash
for ip in `cat iplisttxt`
do
if ping $ip c >/dev/null >&
then
echo ${ip} online
else
echo ${ip} offline
fi
done
脚本代码实例分析
修改分析生成记录
#!/bin/bash
>hoststatustxt
for ip in `cat iplisttxt`
do
if ping $ip c >/dev/null >&
then
echo ${ip} online |tee a hoststatustxt
else
echo ${ip} offline |tee a hoststatustxt
fi
done
脚本代码实例分析
产生一个IP地址池生成个IP并修改分析实现多线程ping
#!/bin/bash
>iplist
for ip in `seq `
do
echo ${ip} >>iplist
done
#!/bin/bash
>hoststatustxt
>temp
fastping()
{
if ping ${} c >/dev/null >&
then
echo ${ip} online |tee a temp
else
echo ${ip} offline |tee a temp
fi
}
for ip in `cat iplisttxt`
do
fastping $ip &
done
wait
sort t k n temp >hoststatustxt
rm temp
temp /pingsh测试一个脚本执行多久