shell 测试的&&、or、!
测试类型 |
[] | [[]] | |
数值测试 | eq、ne、lt、le、gt、ge、 | 同[] | |
字符测试 | ==、>、<、!=、=~、不可用(<=、>=) -z "string" -n "" | 同[] | |
文件测试 -# file | 存在性测试: | -a FILE、 -e FILE | 同[] |
存在性的类型测试: | -b、-c、-d、-f、-h(or -L符号链接)、-p、-s | ||
文件权限测试 | -r、-w、-x | ||
特殊权限测试; | -u、-g、-k | ||
文件是否有内容: | -s | ||
时间戳: | -N | ||
从属关系测试: | -O是否为当前用户属主、-G 是否为当前用户数组 | ||
双目测试: | file1 -nt\-ot file2 file1新\旧于file2 | ||
逻辑测试 | -a、-o、! | &&、||、! | |
数学运算测试 | 不可用 | +、-、*、/、 %、 | |
组合测试 |
各逻辑符号链接的文件测试、符号测试、数值(运算)测试 eg:[ -O FILE -a -x FILE ] |
逻辑运算的执行规则:
-a、-o、!等同于&&、||、!----------->与、或、非
command1 && command2
&&: 如果command1结果为假,则command2不再执行;如果command1为真,则继续执行command2
||:如果command1结果为假,则继续执行command2;如果command1结果为真,则command2不再执行
eg:
command1 && command2 || command3
如果command1成功运行,回传$0,运行command2,||得到回传值$0,command3不会运行;
如果command1运行失败,command1 && command2 回传$1,||得到回传值$1,command3运行成功。