shell条件测试
格式1:[ 测试表达式 ] #在单个中括号的测试格式中,前后需要有空格,在运算符 = 和 != 的两边也要有空格。
格式2:[[ 测试表达式 ]] #ubuntu中测试[[ 2 < 1 ]] && echo 1 || echo 0 运算符和测试表达式前后也需要有空格
说明
1. 格式2是扩展的测试命令。在 [[ ]] 中可以使用通配符进行模式匹配,以及&&,||,>,< 等操作符都行,但不能用于[ ]中;
2. ubuntu测试中,在格式1,2中,表达式前后都需要有空格,在运算符 = 和 != 以及> < 的两边也要有空格。
3. 对整数进行关系运算,也可以用shell 的算数运算符(( ))
1. 常用文件测试操作符
例子1. [[ -f file && -d folder ]] && echo 1 || echo 0 单括号里面不支持&&这种格式,可以用[ -f file -a -d folder ]来替代,其中的-a就相当于&&,-o相当于 ||
所以上例可以改写为 [ -f file -a -d folder ] && echo 1 || echo 0
2. 字符串测试操作符,用[ ]比较好
-z "字符串“ 表示若串长度为0,则为真
-n "字符串” 表示若串长度不为0,则为真
“串1” = “串2” 表示串1等于串2,则为真
“串1” != "串2“ 表示若串1不等于串2,则为真
注意:
1. ”$a” = “$b”中,等号的前面和后面必须要有空格,如果是 != 同理
2. 字符串为了避免出错,统一加上双引号,而且$a和$b的引号中间不能有空格
3. 判断字符串长度的方法
echo “$str”| awk '{print length($0)}'
expr length “$str”
echo “$str”| wc -c
但是第三种得出的值会多1,可能是把结束符也计算在内了
4. 整数二元比较操作符
努力生活,融于自然