test命令:
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
文件或目录往往用的是路径,这边推荐是绝对路径
[操作符 文件目录]
常用的测试操作符
-d | 测试是否为目录(directory) |
---|---|
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(file) |
-r | 测试当前用户是否有权限读取(read) |
-w | 测试当前用户是否有权限写入(write) |
-x | 测试当前用户是否有权限执行(eXcute) |
[操作符 文件或目录] 应用于写脚本当中;在脚本中最好使用绝对路径
查看文件是否存在,存在的话输出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 字串符 ]
常用的测试操作符
=:字串符内容相同
!=:字符串内容相同,!号表示相反的意思
格式1:[ 表达式 ] 操作符 [ 表达式2 ] …
格式2: 命令1 操作符 命令2 …
常用的测试操作符:
-a或&&:逻辑与,“而且”的意思
一共有5个条件,那么5个条件都要成立,那么整个条件才会成立
图中意思为,ETC是一个目录;etc目录也是可读的;两个条件都是成立的,会在屏幕上输出“yes”
因为etc不是文件,即使他是可读的;整个条件都是不成立的
-o或ll:逻辑或,“或者”的意思
或代表,当一群条件中,有一个条件成立,那么整个条件都会成立
图中etc是根目录下的一个目录;loda是不存在于根目录下的,但是因为前者是成立的所以整个条件都成立,就会把内容输出在屏幕上。
!:逻辑否 取反符号
图中:etc是根目录下的一个目录,这是成立的;-f /opt 指根目录下的OPT是一个文件;加了取反符号意思就变为根目录下的OPT不是一个文件,这句话就是对的,那么这个条件就是成立的,中间用的是且符号;条件都要成立,整个条件才会成立;所以整个这个条件是成立的;会把yes输出在屏幕上。
if 条件测试操作
then 命令序列
fi
红色代表固定语句,必须要有;开头必须要有if 结尾必须要有fi
条件成立图:
if 条件测试操作
then 命令序列
else 命令序列2
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
if多分支结构图
用if判断学生成绩:
其中分号一定要加;是一句话的结束
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