赞
踩
通常在云计算运维中,通常会用到shell和python,今天介绍shell当中的if和case语句,来完成测试判断,以减少程序的运行错误。
在shell脚本中的各种条件结构和流程控制都要进行各种的测试,然后根据测试的结果执行不同的操作,有时也会和if语句结合,来完成测试判断,以减少程序的运行错误。
也就是说,当我们在写一个脚本,里面没有任何的判断,就写了一些很普通的命令,那么在我们运行脚本的时候,当遇到了错误,也会一直的执行下去,这样就导致了我们脚本执行的结果是错误的。 这时候我们就会用到我们的条件测试比较。
那么在执行条件测试中通常会返回 “真”或者“假”就像我们执行一条成功的命令,那么执行完这条命令 我们echo$? 如果它返回的是0 那么就是真的返回的状态是非0那么就是假的 也就是错的。
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:【 条件表达式 】 #注意两端要有空格:
#文件测试
[操作符 文件或目录]
&? 返回0表示条件成立,返回非零值表示条件不成立
&& 逻辑与,"而且"的意思
|| 逻辑或,"或者"的意思
常见的测试操作符 | 解释 |
---|---|
-d | 测试是否为目录(directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
[root@localhost ~]# touch a.txt [root@localhost ~]# test -f a.txt [root@localhost ~]# echo $? 0 [root@localhost ~]# test -d a.txt [root@localhost ~]# echo $? 1 [root@server1 test]# mkdir tom [root@server1 test]# ls tom [root@server1 test]# [ -x /test/tom ] [root@server1 test]# echo $? 0 [root@server1 test]# ll 总用量 0 drwxr-xr-x. 2 root root 6 10月 7 19:31 tom echo $? 查询上个步骤是否成立,成立则为0,不成立则为非0值
&& 是而且的含义 表示如果两边的条件都成立,才会正确执行;echo "yes"很明显是正确的
[root@server1 test]# [ -e /dev/cdrom ]&& echo "yes"
yes
[root@server1 test]# test -e /dev/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) |
[root@server1 test]# [ -e /dev/cdrom ]&& echo "yes"
yes
[root@server1 test]# test -e /dev/cdrom && echo "yes"
yes
[root@server1 test]# [ 33 -eq 33 ] && echo "yes"
yes
[root@server1 test]# [ 33 = 33 ] && echo "yes"
yes
[root@server1 test]# [ 33 == 33 ] && echo "yes"
yes
#数值比较用-eq
[root@server1 test]# [ "tom" == "tom" ] && echo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。