博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本基础知识(第二篇)
阅读量:2347 次
发布时间:2019-05-10

本文共 2041 字,大约阅读时间需要 6 分钟。

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

1)常用的选项如下

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

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

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

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

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

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

2)数字比较

-eq:等于(Equal)

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

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

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

3)字符串比较:字符串比较通常用来检查用户输入、系统环境是否满足条件、在提供交互式操作的shell脚本中也可以判断用户输入位置参数是否符合要求,字符串的常用操作如下

=:字符串内容相同

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

-z:字符串内容为空

!=失取反的意思,

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

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

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

!  逻辑否

二、实战

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

#!/bin/bashif	[ ! -d /media/zm ]then	mkdir -p /media/zm fi

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

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

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

#!/bin/bashrpm -q sysstat &>> /dev/nullFile=/var/log/sysmon.logMail=root@contos.benet.comCPU=$(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-*.rpmfiif	[ $CPU -ge 1 ]then	echo "当前CPU的使用率为:$CPU" >> $Filefiif		[ $MEM -gt 2 ]	then		echo "当前内存的使用率为:$MEM" >> $Filefiif	[ $DISK -gt 2 ]then	echo "当前根分区的使用率为:$DISK" >>$Filefiif	[ -f $File ]then	cat $File | mail -s "机房运行状态" $Mail	rm -rf $Filefi

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

#!/bin/bashprice=$(expr $RANDOM % 100 )TIMES=0echo "商品实际价格范围为0-99,猜猜看是多少?"while truedoread -p “请输入你猜的价格目录:” INTlet TIMES++if [ $INT -eq $price ];thenecho "恭喜你答对了,实际价格是 $price"echo "你总共猜测了 $TIMES 次"elif [ $INT -gt $price ];thenecho "太高了!"elseecho "太低了!"fidone

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

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

你可能感兴趣的文章
ASP.NET页面之间传递值解析
查看>>
我要学ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model
查看>>
我要学ASP.NET MVC 3.0(九): MVC 3.0 验证你的Model
查看>>
我要学ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证
查看>>
我要学ASP.NET MVC 3.0(十一): MVC 3.0 使用筛选器
查看>>
ASP.NET MVC3、Pager 分页
查看>>
在 ASP.NET MVC 中创建自定义 HtmlHelper 控件
查看>>
MSDN---扩展方法 (C# 方法中的this参数)
查看>>
我要学ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格
查看>>
我要学ASP.NET MVC 3.0(十五): MVC 3.0 实例系列之表格的排序
查看>>
我要学ASP.NET MVC 3.0(十七): MVC 3.0 实例之表格中数据的筛选
查看>>
Displaying a Sorted, Paged, and Filtered Grid of Data in ASP.NET MVC
查看>>
C#中的操作符
查看>>
ADO.NET Ling to Sql 语法
查看>>
ASP.NET MVC 2博客系列之一:强类型HTML辅助方法
查看>>
详解Asp.net MVC DropDownLists
查看>>
Asp.net MVC防止图片盗链的实现方法,通过自定义RouteHandler来操作
查看>>
VS2010的智能提示没有了的可能原因
查看>>
Creating a Cascading Dropdown in ASP.net MVC 3 and jQuery (1)
查看>>
创建联动的 DropdownList in ASP.net MVC 3 and jQuery (2)
查看>>