1、条件测试的基本语法
shell中不是用true或者false来进行判断的
用户可以使用测试语句来测试指定的条件的真或假。当指定条件为真时整个条件测试语句返回值为0;反之,则为非0
test 条件表达式:语法:test和条件表达式要有一个空格
[ 条件表达式 ]:语法:左右中括号要和中间的表达式有空格
[[ 条件表达式 ]]:语法左右的双中括号要和条件表达有空格
((条件表达式)): 主要是进行整数比较的:整数运算
[[ ]] 和 [ ]和test:进行字符串比较使用 >,<,=,>=,<=
整数比较使用-eq(=), -ne(!=), -gt(>), -lt(<), -ge(>=), -le(<=)
(( )) 和>,<,=,>=,<=, ==
在shell的条件测试语句中:等于可以使用一个=, 也可以使用==
尽量不要进行字符串比较
练习:
使用(()), [[]], [],test完成条件测试:每一个的使用要去测试不少于三个条件
注意:总结一下:那些可以用作正确的整数比较
test如果整数比较:-gt, -lt……
test如果字符串比较:\>, \<……
[[ ]]:可以直接使用<,>,=…… :进行的时字符串比较
可以直接使用-gt, -lt…… :进行整数比较
2、文件条件测试
和文件相关:文件是否存在,文件是否为空,文件类型(普通,目录,字符设备文件)
测试符 | 描述 | 示例 |
-a / -e | 文件或目录存在为真 | [ -e path ] path 存在为 true |
-b | 当文件存在且是块设备文件时为真 | |
-c | 当文件存在且为字符设备时为真 | |
-f | 文件存在为真 | [ -f file_path ] 文件存在为 true |
-d | 目录文件存在为真 | [ -d dir_path ] 目录存在为 true |
-e | 文件存在则为真 | |
-h | 当文件存在且时一个链接文件 | |
-r | 有读权限为真 | [ -r file_path ] file_path 有读权限为 true |
-w | 有写权限为真 | [ -w file_path ] file_path 有写权限为 true |
-x | 有执行权限为真 | [ -x file_path ] file_path 有写权限为 true |
-s | 当文件存在且大小大于0为真 | |
-t | 当文件描述符打开且关联到一个终端为真 | |
-G | 文件存在组id | |
-L | 文件存在且为符号链接 | |
-N | 文件存在且在最后一次读取后被修改 |
练习:使用[] [[]] (()) test判断文件及字符串的条件测试
创建文件:判断文件是否存在,是否具备执行、读、写权限,是否为目录,是否问链接文件,是否为普通文件
read:从标准输入读入赋值给变量
read -p " prompt" var_name
前三条等价于后面的if