标签:结果 案例 避免 == strong 方法 就是 变量 his
常用字符串测试操作符-n 字符串 若字符串的长度不为0,则为真
-z 字符串 若字符串的长度为0,则为真
串1 = 串2 若字符串1等于字符串2,则为真
串1 != 串2 若字符串1不等于字符串2,则为真
需要注意的是:
对于字符串的测试,一定要给变量字符串加双引号在进行比较。
比较符合(例如 = 和 !=)的两端一定要要有空格
!= 和 =可用于比较两个字符串是否相同
例如:
root@ubuntu:~/xpf# [ -n "abc" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# test -n "abc" && echo 1 || echo 0 1 root@ubuntu:~/xpf# xx=xpg root@ubuntu:~/xpf# [ -n "$xx" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# var= root@ubuntu:~/xpf# [ -z "$var" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# var=rr root@ubuntu:~/xpf# [ -z "$var" ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ "abc" = "abc" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ "abc" != "abc" ] && echo 1 || echo 0 0 root@ubuntu:~/xpf#
如果字符串比较时若等号两端没有空格,则会导致判断出现逻辑判断,即使语法正确,但是结果有问题。
切记:对于字符串的验证,一定要使用双引号。
整数二元比较操作
在[ ]里面是哟个的操作符 在[[ ]]或者(( )) 使用的操作符
-eq ==或= 想等
-ne != 不等
-gt > 大于
-ge >= 大于等于
-lt < 小于
-le <= 小于等于
需要注意的是在 [ ] 里面也可以使用 > ,< 但是要使用反斜线转义,个人感觉还不如使用 -eq 之类进行数字比较
root@ubuntu:~/xpf# [ 2 < 1 ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ 2 \< 1 ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ 2 == 1 ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ 2 = 1 ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ 2 != 1 ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ 2 -gt 1 ] && echo 1 || echo 0 1
为了避免错误,还是使用数据比较符进行比较
root@ubuntu:~/xpf# [ 2 -ge 2 ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ 2 -gt 1 ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ 2 -lt 1 ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ 2 -le 1 ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ 2 -le 3 ] && echo 1 || echo 0 1 [ ]和[[ ]] root@ubuntu:~/xpf# [[ 5 > 3 ]] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [[ 5 = 3 ]] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [[ 5 < 3 ]] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [[ 5 != 3 ]] && echo 1 || echo 0 1
个人感觉使用[ ]比较好用,有特殊的正则表达式在用。
整数表示测试:
root@ubuntu:~/xpf# [ $xx -gt $cc ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ $xx -lt $cc ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ $xx -eq $cc ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ $xx -ne $cc ] && echo 1 || echo 0 1
利用[[ ]]和(( ))实现整数条件测试
root@ubuntu:~/xpf# [[ $xx < $cc ]] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [[ $xx > $cc ]] && echo 1 || echo 0 0 root@ubuntu:~/xpf# (( $xx < $cc )) && echo 1 || echo 0 1 root@ubuntu:~/xpf# (( $xx > $cc )) && echo 1 || echo 0 0
关于整数的比较。(( ))语法要优先[[ ]],,但是还是首先推荐使用(),然后就是(( )),最后使用[[ ]].
逻辑判断符:
在[ ]里面是哟个的操作符 在[[ ]]或者(( )) 使用的操作符
-a && 与
-o || 或
! ! 非
逻辑操作符的实践事例
root@ubuntu:~/xpf# [ -f "$ff" -a -f "$ccc" ] && echo 1 || echo 0 0 root@ubuntu:~/xpf# [ -f "$ff" -a -f "$xx" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ -f "$ff" -o -f "$xxx" ] && echo 1 || echo 0 1 root@ubuntu:~/xpf# [ -! "$ff" ] && echo 1 || echo 0 bash: [: -!: unary operator expected 0 root@ubuntu:~/xpf# [ ! "$ff" ] && echo 1 || echo 0 0
需要注意的是:
“-a”和“-o”逻辑操作符符号需要用于[ ]中
&& 和 || 逻辑操作符可用于[[]]和(( ))中,y饿可以外部连接多个[ ]
注意:在[ ]和[[ ]]的两端及比较符号的两端。必须要有空格
逻辑操作符企业案例
#!/bin/bash read -p "input a num:" num #注意这里的空格以及:符号 if [ "$num" -eq 1 -o "$num" -eq 2 ] then echo $num exit 5 else echo "this is bad" fi
使用脚本传参或者read读入的方法
标签:结果 案例 避免 == strong 方法 就是 变量 his
原文地址:http://blog.51cto.com/11726212/2067791