????????测试文本的表达式 是否成立
? ? ? ? 格式: test ???条件表达式
? ? ? ? 格式: [? ? 条件表达式? ? ]? ?([] 内要空格 ,不然不生效)
? ? ? ? 如何测试?
? ? ? ? ? ? ? ?[ 操作符? 文件或目录 ]
? ? ? ? ? ? ? ? echo $?
? ? ? ? ? ? ? ? 返回值是0 正确,返回值非0 不正确
? ? ? ? 操作符:
? ? ? ? ? ? ? ? -d? 测试是否为目录
? ? ? ? ? ? ? ? -a?测试目录或文件是否存在
? ? ? ? ? ? ? ? -e 测试目录或文件是否存在(推荐使用这个,-a有bug)
? ? ? ? ? ? ? ? -f? 测试是否是文件
? ? ? ? ? ? ? ? -r? 测试当前用户是否有权限读取
? ? ? ? ? ? ? ? -w 测试当前用户是否有权限写入
? ? ? ? ? ? ? ? -x 测试当前用户是否有权限执行
? ? ? ? ? ? ? ? -L 测试是否是软连接文件
? ? ? ? ? ? ? ??[整数1? ? 操作符? ? ?整数2?]?
? ? ? ? ? ? ? ? echo $?
? ? ? ? ? ? ? ? 0正确? ?非0 不正确
? ? ? ?????????操作符
? ? ? ? ? ? ? ? -eq? ? ? ?等于
? ? ? ? ? ? ? ? -ne? ? ? ?不等于
? ? ? ? ? ? ? ? -gt? ? ? ? 大于
? ? ? ? ? ? ? ? -lt? ? ? ? ?小于
? ? ? ? ? ? ? ? -le? ? ? ? 小于等于
? ? ? ? ? ? ? ? -ge? ? ? ? 大于等于
? ? ? ? 常用的测试操作符
? ? ? ? ? ? ? ?=? ? ? ? 字符串内容相同
? ? ? ? ? ? ? ?!=? ? ? ? 字符串内容不同,!表示相反的意思
? ? ? ? ? ? ? ?-z? ? ? ? 字符串内容是否存在
? ? ? ? ? ? ? ?-n? ? ? ? 字符是否存在
? ? ? ? 格式
? ? ? ? ? ? ? [ 字符串1 操作符? 字符串2? ]?
???????????????echo $?
? ? ? ? ? ? ? ? 0正确? 非0不正确
? ? ? ? 常见条件
? ? ? ? ? ? ??-a或&&:? 逻辑与,"而且"的意思?两边条件为真才为真
? ? ? ? ? ? ? -o或 | |:逻辑或,"或者"的意思 有一个条条件为真就为真
? ? ? ? ? ? ? !:逻辑否
? ? ? && 与
? ? ? ? a && b? ? ? ? ?同时满足a和b命令的要求,才会返回正确,有一方不满足,便是假
? ? ? | | 或
? ? ? ? a | | b? ? ? ? ? ?只要有一个结果为真,结果比为真。a结果为真,总结果肯定为真,
? ? ? ? ? ? ? ? ? ? ? ? ? ? 因此不需要执行b。a结果为假,b就需要进行判断,才能得到真正的结果
? ? ? ?a && b | | c? ? a如果为真,则执行b 就不会执行c? ?a如果为假,就不会执行b,就需要执行c
? ? ? ? ????????[ [ 表达式 条件? 表达式 ] ]
? ? ? ? ????????条件 ????????==? ? ? ? 通配符
????????????????? ??? ??????????=~? ? ? ? 正则表达式
? ? ? ? ? ? (a,b....) 和 {a,b....}? 都可以将命令组合在一起,批量执行
? ? ? ? ? ?()会开启子进程? {}不会开启子进程
? ? ? ? ? ? ?分支结构
? ? ? ? ? ? ? ? ?单分支
? ? ? ? ? ? ? ? ? ? ? if 判断条件;
? ? ? ? ? ? ? ? ? ? ? then? ? ? ?
??????????????????????条件为真的分支代码
? ? ? ? ? ? ? ? ? ? ? fi
? ? ? ? ? ? ? ? 双分支
? ? ? ? ? ? ? ? ? ? ? if 判断条件;
? ? ? ? ? ? ? ? ? ? ? ? then
? ? ? ? ? ? ? ? ? ? ? ?条件为真的分支代码
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? 条件为假的分支代码
? ? ? ? ? ? ? ? ? ? ? ? fi
? ? ? ? ? ? ? ? 多分支
? ? ? ? ? ? ? ? ? ? ? ?if 判断条件1;
? ? ? ? ? ? ? ? ? ? ? ? ?then
? ? ? ? ? ? ? ? ? ? ? ? 条件1为真的分支代码
? ? ? ? ? ? ? ? ? ? ? ?elif 判断条件2;
? ? ? ? ? ? ? ? ? ? ? ? ? then
? ? ? ? ? ? ? ? ? ? ? ? 条件2为真的分支代码
? ? ? ? ? ? ? ? ? ? ? ?elif 判断条件3;
? ? ? ? ? ? ? ? ? ? ? ? ? then
? ? ? ? ? ? ? ? ? ? ? ? 条件3为真的分支代码
? ? ? ? ? ? ? ? ? ? ? ? ....
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ?以上条件都不符合,则执行的代码
? ? ? ? ? ? ? ? ? ? ? ? fi
? ? ? ? 格式:
? ? ? ? ? ? ?read? -p? ? i
????????? ? case? $i? ? in
? ? ? ? ? ? ? ?PAT1)? ? ? ??
? ? ? ? ? ? ? ? ? ?分支1
? ? ? ? ? ? ? ? ????;;
? ? ? ? ? ? ? ?PAT2)
? ? ? ? ? ? ? ? ? ?分支2
? ? ? ? ? ? ? ? ? ?;;
? ? ? ? ? ? ? ? ...
? ? ? ? ? ? ? ? *)
? ? ? ? ? ? ? ? ;;
? ? ? ? ? ? ? ? easc
????????case支持glob风格的通配符:
????????????????????????* 任意长度任意字符
????????????????????????? 任意单个字符
????????????????????????[0-9] 指定范围内的任意单个字符
????????????????????????| ??或者,如: a|b? ? ? ? ? ? ? ?
? ? ?? ? ?echo? ?"abcdfg"??
? ? ? ? ? ? ?abcdfg
? ? ? ? ? ? 输出abcdfg
? ? ? ? 选项
? ? ? ? ? ? ? ?-n? 不换行输出
? ? ? ? ? ? ? ?-e? ?表示输出转义符
? ? ? ? ? ??
" " 内的可用选项
\r | 光标移至行首,并且不换行 |
\s | 当前shell的名称,如bash |
\t | 插入Tab键,制表符 |
\n | 输出换行 |
\f | 换行,但光标仍停留在原处 |
\ | 表示插入"\"本身转义 |
\b | 表示退格 不显示前一个字符 |
\c | 抑制更多的输出或不换行 |
???????????????? ? ? ? ? ? ?
????????
??????????????????
? ? ?