博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本 (二)文本测试、整数值比较、字符串比较 条件测试操作 if语句应用实例...
阅读量:6388 次
发布时间:2019-06-23

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

####################test命令####################

测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
·
文件测试
[ 操作符 文件或目录 ]
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
·
[root@localhost ~]# [ -d /media/cdrom ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /media/cdrom/Server ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /media/cdrom ] && echo "YES"
YES
·
####################整数值比较####################
[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
·
Unum=who | wc -l ###查看当前以登录用户数
[ $Unum -gt 2 ] && echo "Too many." ###如果大于2就显示Too many.小于或等于则不提示
Too many.
·
FreeCC=$( free -m | grep "Mem: " | awk '{print $6}' ) ###查看物理内存(Mem)当低于1024MB时输出具体值
[ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
·
####################字符串比较####################
格式
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
·
echo $LANG
[ $LANG != "en.US" ] && echo "Not en.us"
·
read -p "是否覆盖现有文件(yes/no)?" ACK
是否覆盖现有文件(yes/no)?yes
[ $ACK = "yes" ] && echo "覆盖"
覆盖
·
read -p "是否覆盖现有文件(yes/no)?" ACK
是否覆盖现有文件(yes/no)?no
[ $ACK = "no" ] && echo "不覆盖"
不覆盖
·
####################逻辑测试####################
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
常用的测试操作符
-a或&&:逻辑与,“而且”的意思
-o或||:逻辑或,“或者”的意思
!:逻辑否,相反的
·
uname -r
Mnum=$(uname -r | awk -F. '{print $1}')
Snum=$(uname -r | awk -F. '{print $2}')
[ $Mnum -ge 3 ] && [ $Snum -gt 4 ] && echo "符合要求" ###前面两个都成立,则输出
·
####################if语句的结构#################
·
1、单分支结构
if 条件测试
then
命令判断
fi
·
判断挂载点目录,若不存在则自动创建
[root@localhost ~]# cat chkmountdir.sh
#!/bin/bash
MOUNT_DIR="/media/cdrom/"
if [ ! -d $MOUNT_DIR ]
then
mkdir -p $MOUNT_DIR
fi
·
2、双分支结构
if 条件测试
then
命令序列1
else
命令序列2
fi
·
判断目标主机是否存活,显示检测结果
[root@localhost ~]# cat pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is up."
else
echo "Host $1 is down."
fi
·
·
3、多分支结构
if 条件测试操作1
then
命令序列1
elif 条件测试操作2
then
命令序列2
else
命令序列3
fi
·
判断分数范围,分出优秀、合格、不合格三档
[root@localhost ~]# vi gradediv.sh
#!/bin/bash
read -p "请输入您的分数(0-100):" GRADE
if [ $GRADE -gt 100 ]
then
echo "$GRADE 分,大于100分了,输入有问题"
elif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then
echo "$GRADE 分,优秀!"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
echo "$GRADE 分,合格!"
else
echo "$GRADE 分,不合格!"
fi
·
[root@localhost opt]#chmode +x gradediv.sh
[root@localhost opt]# ./gradediv.sh
请输入您的分数(0-100):101
101 分,大于100分了,输入有问题
[root@localhost opt]# ./gradediv.sh
请输入您的分数(0-100):88
88 分,优秀!
[root@localhost opt]# ./gradediv.sh
请输入您的分数(0-100):0
0 分,不合格!

转载于:https://blog.51cto.com/13348945/2175538

你可能感兴趣的文章
放弃jQuery, 使用原生js
查看>>
跨越适配&性能那道坎,企鹅电竞Android weex优化
查看>>
一文读懂鼠标滚轮事件(wheelEvent)
查看>>
腾讯云国内节点centos7.2安装k8sv1.12.3
查看>>
Python爬虫--- 1.5 爬虫实践: 获取百度贴吧内容
查看>>
解决Shell脚本$'\r': command not found问题
查看>>
ionic3使用百度地图
查看>>
JavaWEB开发11——JSP
查看>>
轻松搞定javascript中this的指向
查看>>
每天一个设计模式之单例模式
查看>>
Image Load Error Handler
查看>>
Vue2.5笔记:Vue中的模版
查看>>
策略路由基础命令(Linux)分享
查看>>
linux下磁盘挂载与查看
查看>>
javascript 闭包
查看>>
如何减少浏览器repaint和reflow(上)
查看>>
Exchange 2010之收件人对象管理
查看>>
Yarn详解
查看>>
C与C++《精通Unix下C语言与项目实践》读书笔记(8)
查看>>
初始化linux系统脚本
查看>>