Shell脚本 (二)文本测试、整数值比较、字符串比较 条件测试操
发布时间:2020-12-15 18:17:56 所属栏目:安全 来源:网络整理
导读:####################test命令#################### 测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值 格式1:test 条件表达式 格式2:[ 条件表达式 ] · 文件测试 [ 操作符 文件或目录 ] -d:测试是否为目录(Directory) -e
####################test命令####################
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值 格式1:test 条件表达式 格式2:[ 条件表达式 ] · 文件测试 [ 操作符 文件或目录 ] -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限读取(Read) -w:测试当前用户是否有权限写入(Write) -x:测试当前用户是否有权限执行(eXcute) · [ [email?protected] ~]# [ -d /media/cdrom ] [ [email?protected] ~]# echo $? 0 [ [email?protected] ~]# [ -d /media/cdrom/Server ] [ [email?protected] ~]# echo $? 1 [ [email?protected] ~]# [ -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 · 判断挂载点目录,若不存在则自动创建 [ [email?protected] ~]# 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 · 判断目标主机是否存活,显示检测结果 [ [email?protected] ~]# 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 · 判断分数范围,分出优秀、合格、不合格三档 [ [email?protected] ~]# 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 · [ [email?protected] opt]#chmode +x gradediv.sh [ [email?protected] opt]# ./gradediv.sh 请输入您的分数(0-100):101 101 分,大于100分了,输入有问题 [ [email?protected] opt]# ./gradediv.sh 请输入您的分数(0-100):88 88 分,优秀! [ [email?protected] opt]# ./gradediv.sh 请输入您的分数(0-100):0 0 分,不合格! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读