shell脚本基础知识(第二篇)

1、在介绍if语句先了解其语法shell

1)经常使用的选项以下bash

 -d:测试是否为目录(Directory)或目录是否存在测试

-e:测试目录或文件是否存在(Exist)code

-f:测试是否为文件(File)过文件是否存在blog

-r:测试当前用户是否有权限读取(Read)游戏

-w:测试当前用户是否有权限写入(Write)进程

-x:测试当前用户是否有权限执行(eXcute)内存

2)数字比较字符串

-eq:等于(Equal)it

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-le:小于或等于(Lesser or Equal)

-ge:大于或等于(Greater or Equal)

3)字符串比较:字符串比较一般用来检查用户输入、系统环境是否知足条件、在提供交互式操做的shell脚本中也能够判断用户输入位置参数是否符合要求,字符串的经常使用操做以下

=:字符串内容相同

!=:字符串内容不一样,! 号表示相反的意思

-z:字符串内容为空

!=失取反的意思,

4)逻辑测试:是判断两个或多个条件之间的依赖关系,当系统取决于多个条件时,根据这些条件或其中的一个条件成立等状况须要有一个过程,经常使用的逻辑测试以下所示

-a或&&:逻辑与,“并且”的意思

-o或||:逻辑或,“或者”的意思

!  逻辑否

2、实战

1)//编写一个脚本判断挂载点目录zm目录是否存在若是不存在则新建此目录

#!/bin/bash
if
	[ ! -d /media/zm ]
then

	mkdir -p /media/zm 
fi

2)//经过一个脚本检查vsftpd服务是否运行,若是已经运行列出器监听的地址PI号,不然输出提示“警告vsftpd服务不可用!”

#!/bin/bash
/etc/init.d/vsftpd status &>>/dev/null
if
	[ $? -eq 0 ]
then
	echo "vsftpd的监听地址:$(netstat -anpt | awk '{print $3}' )"
	echo "进程PID号$(pgrep -x vsftpd)"
else
	echo "警告vsftpd服务不可用"
fi

3)///编写脚本判断系统中sysstat软件包的安装状况并编写监控脚本存在异常时邮件告警,监控CPU使用率、内存使用率、根分区的占用率

#!/bin/bash
rpm -q sysstat &>> /dev/null
File=/var/log/sysmon.log
Mail=root@contos.benet.com
CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $11}' | awk -F. '{print $1}'))
MEM=$(expr $(free -m | grep "cache:" | awk '{print $3}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
DISK=$(df -hT | grep "/$" | awk '{print $6}' | awk -F% 'print $1')
if
	[ $? -eq 0 ]
then
	echo "$(rpm -q sysstat)"
else
	dir=$(cd /media/Packages)
	echo "将要自动安装sysstat软件"
	rpm -ivh /media/Packages/sysstat-*.rpm
fi
if
	[ $CPU -ge 1 ]
then
	echo "当前CPU的使用率为:$CPU" >> $File
fi
if
		[ $MEM -gt 2 ]
	then
		echo "当前内存的使用率为:$MEM" >> $File
fi
if
	[ $DISK -gt 2 ]
then
	echo "当前根分区的使用率为:$DISK" >>$File
fi
if
	[ -f $File ]
then
	cat $File | mail -s "机房运行状态" $Mail
	rm -rf $File
fi

4)//猜价格游戏,范围是0-999。太好玩了

#!/bin/bash
price=$(expr $RANDOM % 100 )
TIMES=0
echo "商品实际价格范围为0-99,猜猜看是多少?"
while true
do
read -p “请输入你猜的价格目录:” INT
let TIMES++
if [ $INT -eq $price ];then
echo "恭喜你答对了,实际价格是 $price"
echo "你总共猜想了 $TIMES 次"
elif [ $INT -gt $price ];then
echo "过高了!"
else
echo "过低了!"
fi
done

。。。。。。。。。。。。。。。

一个小小的技术交流(如何用脚本实现99乘法表?)。能够写在评论上,多多交流。