Shell条件语句,if case

条件测试操作:

test命令:
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]

文件测试

文件或目录往往用的是路径,这边推荐是绝对路径

[操作符 文件目录]

常用的测试操作符

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

在这里插入图片描述
0代表为测试正确
在这里插入图片描述
还有另外一种文件测试方法

[操作符 文件或目录] 应用于写脚本当中;在脚本中最好使用绝对路径
在这里插入图片描述
查看文件是否存在,存在的话输出yes
abc.txt 文件是存在于opt目录下的所有屏幕中输出为yes
在这里插入图片描述
因为opt目录下没有poca.txt文件,所以屏幕中不会输入yes
在这里插入图片描述

条件测试操作

整数比较

[整数1 操作符 整数2]

常用的测试操作符

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
le 小于或等于
-ge 大于或等于

这是比较数值的,用字母;50和50是一样的
在这里插入图片描述
比的是字符串,比每一个字符是否一样需要和比较数值区分开来;比较数值需要用符号
在这里插入图片描述
通过使用“!”取反符号,本来为不成立;但是因为加了取反符号,效果就会反过来,也就会成立
Zhang和zhan的字符数是不一样的,按道理输出结果不应该为yes;但是因为加了!效果就会反过来,所以输出结果也会出现在屏幕上。
在这里插入图片描述

整数值比较

[ 整数1 操作符 整数2 ]
常用的测试操作符
登录的用户个数少于5的话就将Too low输出在屏幕上
在这里插入图片描述
free -m查看内存参数,可以查看虚拟内存和物理内存
在这里插入图片描述
将物理内存中的第四列的空存空间过滤出来
在这里插入图片描述
两种方法可以将变量内容输出到频幕上;${}表示为这是一种变量
在这里插入图片描述

字符串比较

格式1:[ 字串符1 = 字串符2 ] 注意要有空格

​ [ 字串符1 != 字串符2 ] 注意要有空格

格式2:[ -z 字串符 ]

常用的测试操作符

=:字串符内容相同

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

环境变量要是不等于英文就输出no
在这里插入图片描述
-z:字符串内容为空
在这里插入图片描述

逻辑测试

格式1:[ 表达式 ] 操作符 [ 表达式2 ] …

格式2: 命令1 操作符 命令2 …

常用的测试操作符:

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

一共有5个条件,那么5个条件都要成立,那么整个条件才会成立

图中意思为,ETC是一个目录;etc目录也是可读的;两个条件都是成立的,会在屏幕上输出“yes”
在这里插入图片描述
因为etc不是文件,即使他是可读的;整个条件都是不成立的
在这里插入图片描述
-o或ll:逻辑或,“或者”的意思
或代表,当一群条件中,有一个条件成立,那么整个条件都会成立

图中etc是根目录下的一个目录;loda是不存在于根目录下的,但是因为前者是成立的所以整个条件都成立,就会把内容输出在屏幕上。
在这里插入图片描述
!:逻辑否 取反符号

图中:etc是根目录下的一个目录,这是成立的;-f /opt 指根目录下的OPT是一个文件;加了取反符号意思就变为根目录下的OPT不是一个文件,这句话就是对的,那么这个条件就是成立的,中间用的是且符号;条件都要成立,整个条件才会成立;所以整个这个条件是成立的;会把yes输出在屏幕上。
在这里插入图片描述

if语句的结构:

单分支结构

if 条件测试操作

then 命令序列

fi

红色代表固定语句,必须要有;开头必须要有if 结尾必须要有fi
在这里插入图片描述
条件成立图:
在这里插入图片描述

双分支结构

if 条件测试操作

then 命令序列

else 命令序列2

fi
在这里插入图片描述
在这里插入图片描述
双分支结构图:
在这里插入图片描述

多分支结构

if 条件测试操作1

then 命令序列1

elif 条件测试操作2

then 命令序列2

else

命令序列3

fi
if多分支结构图
在这里插入图片描述
用if判断学生成绩:
在这里插入图片描述
其中分号一定要加;是一句话的结束

case多分支结构:

if语句:适用于判断区间范围
case语句:适用于判断某一个固定值,固定字符串
se一般匹配区间范围,而case一般匹配某个值
Case一般用于去写服务启动脚本;清单命令序列
在这里插入图片描述
实例:
判断学生成绩的优良
在这里插入图片描述
实例:10s跑进决赛;分为男子组和女子组

#!/bin/bashread -p "请输入你的跑步时间: " time
case "$time" in  
[1-9]|10)
echo "恭喜你跑进决赛"   
read -p "请输入你的性别: " sex  
case "$sex" in  
男)  
echo "你被分为男子组"  
;;)  
echo "你被分为女子组"  
;;  
*)  
echo "请输入正确的性别:男或女"  
esac  
;;    
*)  echo "你被淘汰了"  
esac

echo $RANDOM 输出随机数
echo [RANDOM%10] 输出除以10的余数
echo [RANDOM%10+1] 输出除以10的余数再加1

猜你喜欢

转载自blog.csdn.net/Cpureman/article/details/107446764