1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > shell编程之条件语句(文件测试 test命令 字符串和逻辑测试 if单支语句 if双支语

shell编程之条件语句(文件测试 test命令 字符串和逻辑测试 if单支语句 if双支语

时间:2021-11-16 14:16:02

相关推荐

shell编程之条件语句(文件测试 test命令 字符串和逻辑测试 if单支语句 if双支语

文章目录

shell编程之条件语句条件测试test命令整数值测试free -m 提供了更简洁的查看系统内存使用情况:字符串和逻辑测试字符串逻辑测试一元运算符,二元运算符和三元运算符if语句if单分支语句if双分支语句(一看就懂)if多分支语句(一看就懂)case 命令有趣小实验

shell编程之条件语句

简单的shell脚本程序中,各条语句将按先后顺序依次执行,从而实现批处理的自动化过程。

条件测试

test命令

-d 测试是否为目录(directory)-e测试目录或文件是否存在(Exist)-f测试是否为文件(File)-r测试当前用户是否有权限读取(Read)-w测试当前用户是否有权限写入(Write)-x测试当前用户是否有权限执行(eXcute)

[root@localhost ~]# mkdir ccc[root@localhost ~]# test -d ccc 测试是否是目录[root@localhost ~]# echo $?0 是[root@localhost ~]# test -f ccc 测试是否是文件[root@localhost ~]# echo $?1不是[root@localhost ~]# [ -d ccc ][root@localhost ~]# echo $?0[root@localhost ~]# [ -f ccc ][root@localhost ~]# echo $?1[root@localhost ~]# [ -x ccc ] && echo "yes"yes[root@localhost ~]# [ -x ccc ] || echo "yes"

整数值测试

-eq 等于(Equal)-ne 不等于(Not Equal)-gt 大于(Greater Than)-lt 小于(Lesser Than)-le 小于或等于(Lesser or Equal)-ge 大于或等于(Greater or Equal)

[root@localhost ~]# [ 5 -gt 3 ] && echo “yes”“yes”[root@localhost ~]# [ 5 -lt 3 ] && echo “yes”[root@localhost ~]# [ 5 -eq 5 ] && echo “yes”“yes”

free -m 提供了更简洁的查看系统内存使用情况:

[root@localhost ~]# free -m 提供了更简洁的查看系统内存使用情况:total used freeshared buff/cache availableMem: 3770 160 340811 201 3366Swap:3967 0 3967Mem:表示物理内存统计Swap:表示硬盘上交换分区的使用情况total1: 表示物理内存总量。used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实free1:未被分配的内存。shared1: 共享内存,一般系统不会用到,这里也不讨论buffers1: 系统分配但未被使用的buffers 数量。cached1: 系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量。free2:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。

字符串和逻辑测试

字符串

[root@localhost ~]# [ “男” != “男“ ] && echo "yes"yes[root@localhost ~]# [ “男” = “女“ ] && echo "yes"[root@localhost ~]#

[root@192 ~]# vim 44.sh#!/bin/bashread -p "是后创建/opt/zhang目录: (yes/no)" ack[ $ack = yes ] && mkdir /opt/zhangecho "创建成功"[root@192 ~]# sh 44.sh 是后创建/opt/share目录: (yes/no)yes创建成功[root@192 ~]# ls /optzhang

逻辑测试

&&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。

用 || 时,左端为真,右端不需要进行运算,结果直接为真

但&&和 || 更为高效一点,可以减少不必要的运算

[root@xue ~]# [ 1 -ne 2 ] && echo "yes"yes[root@localhost opt]# [ -d /opt/zhangsan ] && echo "yes"yes

一元运算符,二元运算符和三元运算符

let 命令

let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。

i=i++:先赋值在运算i=++i:先自加在赋值i=–i:先自减在赋值[root@192 ~]# echo $i1[root@192 ~]# let i=++i[root@192 ~]# echo $i2[root@192 ~]# let i+=2 相当于i=i+2'[root@192 ~]# echo $i4

if语句

if单分支语句

单分支结构(基本格式)if 条件测试操作then 命令序列fi

实验

[root@localhost ~]# vim text#!/bin/bsahread -p "请输入目录位置: " FILEif [ ! -d $FILE ]thenmkdir -p $FILEfi[root@localhost ~]# sh text 请输入目录位置: tesr[root@localhost ~]# lstesr

if双分支语句(一看就懂)

双分支结构(基本格式)if 条件测试操作then 命令序列1语句块1(条件成立)else 命令序列2语句块2(条件不成立)fi-------------------------------搞笑解释如果(if) [你有房]那么(then)我就嫁给你否则(else)good bye!果如

实验

if双分支语句[root@localhost ~]# vim text#!/bin/bsahread -p "请输入目录位置: " FILEif [ -e $FILE ]thenmkdir -p $ FILE mkdir的-p选项允许你一次性创建多层次的目录elseecho "目录已存在"fi[root@localhost ~]# sh text 请输入目录位置: 12目录已存在

判断主机是否在线[root@localhost ~]# vim 3.txt#!/bin/bashread -p "请输入IP地址:" addrping -c 3 -i 0.2 -W 3 $addr &> /dev/null 《《 意思是把 标准输出 和 标准错误输出 都重定向到黑洞里if [ $? -eq 0 ]thenecho "$addr is up"elseecho "$addr is down"fi[root@localhost ~]# sh 3.txt 请输入IP地址:192.168.136.244192.168.136.244 is up -c:发送三个包-i: 发包间隔0.2秒-W:等待时间3秒

if多分支语句(一看就懂)

多分支结构(基本格式)if 条件测试then 命令序列1语句块1(条件成立)elif 条件测试操作2语句块1(条件成立)then 命令序列2else 命令序列3fi--------------------------------------------搞笑解释如果(if) [你有房]那么(then)我就嫁给你 或者(elif) [你爸是马云]那么(then)我就嫁给你 或者(eilf) [你很努力很吃苦]那么(then)我们可以先谈男女朋友否则 (else)洗洗,早点睡吧果如

实验

[root@xue ~]# vim grap.sh#!/bin/bashread -p "请输入你的分数(0-100: " GRADEif [ $GRADE -ge 0 ] && [ $GRADE -le 100 ]thenif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]thenecho "$GRADE分,优秀"elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]thenecho "$GRADE分,合格"elseecho “不合格”fiecho "请输入(0-100)区间 "fi[root@xue ~]# sh grap.sh 请输入你的分数(0-100: 111请输入(0-100)区域指!

case 命令

case 语句和 if…elif…else 语句一样都是多分支条件语句,不过和多分支 if 条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以判断多种条件关系。

格式case $ake in[a-z]|[A-Z])echo "你的字母";;[0-9])echo "你的字母";;……*)echo "你的字母"esac

[root@localhost ~]# vi pinghost.sh read -p "请输入(0-100) 成绩: " scorecase $score in8[5-9]|9[0-9]|100)echo "成绩优秀";;7[0-9]|8[0-4])echo "成绩良好";;6[0-9])echo "成绩合格";;*)echo "成绩不合格" esac

有趣小实验

竞速比赛10秒进决赛,分男子组和女子

[root@xue ~]# sh run.sh #!/bin/bash#竞速比赛10秒进决赛,分男子组和女子组read -p "请输入你的成绩" numif [ $num -ge 0 ]&&[ $num -le 10 ];thenread -p "请输入你的性别" sexif [ $sex = 男 ];thenecho "成绩合格,进入男子组"elif [ $sex = 女 ];thenecho "成绩合格,进入女子组 "else echo "请输入正确信息"fielse echo "成绩不及格,你被淘汰"fi[root@xue ~]# sh run.sh 请输入你的成绩10请输入你的性别男成绩合格,进入男子组

shell编程之条件语句(文件测试 test命令 字符串和逻辑测试 if单支语句 if双支语句 if多支语句 case命令 用if写跑步小实验)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。