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. 整数二元比较操作符

 

 

 

posted @ 2017-12-21 11:51  坚强的小蚂蚁  阅读(388)  评论(0编辑  收藏  举报