Linux笔记之shell脚本3:测试语句
2017-09-19 14:49
531 查看
测试语句用来判定表达式是否成立,成立返回0,失败返回非0
细分可分为:文件测试、逻辑测试、整数值比较、字符串比较
PART 1:文件测试
格式[ 操作符 文件或测试 ]
其中操作符有:
-d是否为目录
-e 是否存在
-f 是否为文件
-r 当前用户是否有读取权限
-w 当前用户是否有写入权限
-x 当前用户是否有执行权限
#判断/etc是否为目录,返回0,成立
[root@okaka Desktop]# [ -d /etc/ ]
[root@okaka Desktop]# echo $?
0
#其他对号入座看看,可以动手试一试
[root@okaka Desktop]# [ -d test.sh ]
[root@okaka Desktop]# echo $?
1
[root@okaka Desktop]# [ -f test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -r test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -x test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -w test.sh ]
[root@okaka Desktop]# echo $?
0
PART 2:逻辑测试
就是最熟悉的与或非(&& || !)啦
#判断user是否不为root用户(当然不是root用户,所以返回0)
[root@okaka Desktop]# su user
[user@okaka Desktop]$ [ $USER != root ]
[user@okaka Desktop]$ echo $?
0
#也可以一句搞定:
[user@okaka Desktop]$ [ $USER != root ] && echo "user"
user
所以:
[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
等价于
[root@okaka Desktop]# [ -e test.sh ] && echo 0 || echo 1
因此逻辑测试在一定程度上可以代替之后要讲的条件语句
PART 3:整数值比较
操作符有6个:
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否小于等于
-ge 是否大于等于
#10是否小于9是则输出0,否则输出1
[user@okaka Desktop]$ [ 10 -lt 9 ]
[user@okaka Desktop]$ echo $?
1
#当然也可以这样做
[user@okaka Desktop]$ [ 10 -lt 9 ] && echo 0 || echo 1
1
#还可以比较一下内存:
[root@okaka ~]# FreeMem=`free -m|grep cache:|awk '{print$3}'`
[root@okaka ~]# echo $FreeMem
708
[root@okaka ~]# [ $FreeMem -lt 1024 ] && echo "have no memory"
have no memory
PART 4:字符串比较
baac
操作符有3个:
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 字符串内容是否为空
[root@okaka ~]# [ -z $HaHa ]
[root@okaka ~]# echo $?
0
[root@okaka ~]# echo $LANG
en_US.UTF-8
[root@okaka ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
细分可分为:文件测试、逻辑测试、整数值比较、字符串比较
PART 1:文件测试
格式[ 操作符 文件或测试 ]
其中操作符有:
-d是否为目录
-e 是否存在
-f 是否为文件
-r 当前用户是否有读取权限
-w 当前用户是否有写入权限
-x 当前用户是否有执行权限
#判断/etc是否为目录,返回0,成立
[root@okaka Desktop]# [ -d /etc/ ]
[root@okaka Desktop]# echo $?
0
#其他对号入座看看,可以动手试一试
[root@okaka Desktop]# [ -d test.sh ]
[root@okaka Desktop]# echo $?
1
[root@okaka Desktop]# [ -f test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -r test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -x test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -w test.sh ]
[root@okaka Desktop]# echo $?
0
PART 2:逻辑测试
就是最熟悉的与或非(&& || !)啦
#判断user是否不为root用户(当然不是root用户,所以返回0)
[root@okaka Desktop]# su user
[user@okaka Desktop]$ [ $USER != root ]
[user@okaka Desktop]$ echo $?
0
#也可以一句搞定:
[user@okaka Desktop]$ [ $USER != root ] && echo "user"
user
所以:
[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
等价于
[root@okaka Desktop]# [ -e test.sh ] && echo 0 || echo 1
因此逻辑测试在一定程度上可以代替之后要讲的条件语句
PART 3:整数值比较
操作符有6个:
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否小于等于
-ge 是否大于等于
#10是否小于9是则输出0,否则输出1
[user@okaka Desktop]$ [ 10 -lt 9 ]
[user@okaka Desktop]$ echo $?
1
#当然也可以这样做
[user@okaka Desktop]$ [ 10 -lt 9 ] && echo 0 || echo 1
1
#还可以比较一下内存:
[root@okaka ~]# FreeMem=`free -m|grep cache:|awk '{print$3}'`
[root@okaka ~]# echo $FreeMem
708
[root@okaka ~]# [ $FreeMem -lt 1024 ] && echo "have no memory"
have no memory
PART 4:字符串比较
baac
操作符有3个:
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 字符串内容是否为空
[root@okaka ~]# [ -z $HaHa ]
[root@okaka ~]# echo $?
0
[root@okaka ~]# echo $LANG
en_US.UTF-8
[root@okaka ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
相关文章推荐
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- Linux笔记之shell脚本4:条件语句
- shell 脚本实战笔记(9)--linux自动批量添加用户
- if嵌套语句 shell脚本实例 测试是否闰年
- shell脚本编程之case语句学习笔记
- Linux新手生存笔记[8]——shell脚本基础1-变量
- Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
- linux下shell脚本移动、复制文件笔记
- 【Linux学习笔记】Shell 基础(3) — Shell流程控制语句
- 学习笔记 linux 编译文件用shell脚本实现
- 《跟老男孩学Linux运维之shell编程实战》-第五章 shell脚本的条件测试
- shell脚本编程之case语句学习笔记
- Linux命令行与Shell脚本编程[学习笔记1]
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- linux学习笔记--工程师技术:shell脚本基础
- Zynq-Linux移植学习笔记之22-Linux应用程序调用shell脚本
- Linux下Shell脚本的课堂笔记
- Shell笔记3——脚本的条件测试与比较
- shell脚本编程之循环语句学习笔记