字符串测试表达式
常用字符串测试操作符 -n 字符串 若字符串的长度不为0,则为真 -z 字符串 若字符串的长度为0,则为真 串1 = 串2 若字符串1等于字符串2,则为真 串1 != 串2 若字符串1不等于字符串2,则为真 需要注意的是: 对于字符串的测试,一定要给变量字符串加双引号在进行比较。 比较符合(例如 = 和 !=)的两端一定要要有空格 != 和 =可用于比较两个字符串是否相同 例如: root@ubuntu:~/xpf#[-n"abc"]&&echo1||echo0 1 root@ubuntu:~/xpf#test-n"abc"&&echo1||echo0 1 root@ubuntu:~/xpf#xx=xpg root@ubuntu:~/xpf#[-n"$xx"]&&echo1||echo0 1 root@ubuntu:~/xpf#var= root@ubuntu:~/xpf#[-z"$var"]&&echo1||echo0 1 root@ubuntu:~/xpf#var=rr root@ubuntu:~/xpf#[-z"$var"]&&echo1||echo0 0 root@ubuntu:~/xpf#["abc"="abc"]&&echo1||echo0 1 root@ubuntu:~/xpf#["abc"!="abc"]&&echo1||echo0 0 root@ubuntu:~/xpf# 如果字符串比较时若等号两端没有空格,则会导致判断出现逻辑判断,即使语法正确,但是结果有问题。 切记:对于字符串的验证,一定要使用双引号。 整数二元比较操作 在[ ]里面是哟个的操作符 在[[ ]]或者(( )) 使用的操作符 -eq ==或= 想等 -ne != 不等 -gt > 大于 -ge >= 大于等于 -lt < 小于 -le <= 小于等于 需要注意的是在 [ ] 里面也可以使用 > ,< 但是要使用反斜线转义,个人感觉还不如使用 -eq 之类进行数字比较 root@ubuntu:~/xpf#[2<1]&&echo1||echo0 1 root@ubuntu:~/xpf#[2&;1]&&echo1||echo0 0 root@ubuntu:~/xpf#[2==1]&&echo1||echo0 0 root@ubuntu:~/xpf#[2=1]&&echo1||echo0 0 root@ubuntu:~/xpf#[2!=1]&&echo1||echo0 1 root@ubuntu:~/xpf#[2-gt1]&&echo1||echo0 1 为了避免错误,还是使用数据比较符进行比较 root@ubuntu:~/xpf#[2-ge2]&&echo1||echo0 1 root@ubuntu:~/xpf#[2-gt1]&&echo1||echo0 1 root@ubuntu:~/xpf#[2-lt1]&&echo1||echo0 0 root@ubuntu:~/xpf#[2-le1]&&echo1||echo0 0 root@ubuntu:~/xpf#[2-le3]&&echo1||echo0 1 []和[[]] root@ubuntu:~/xpf#[[5>3]]&&echo1||echo0 1 root@ubuntu:~/xpf#[[5=3]]&&echo1||echo0 0 root@ubuntu:~/xpf#[[5<3]]&&echo1||echo0 0 root@ubuntu:~/xpf#[[5!=3]]&&echo1||echo0 1 个人感觉使用[ ]比较好用,有特殊的正则表达式在用。 整数表示测试: root@ubuntu:~/xpf#[$xx-gt$cc]&&echo1||echo0 0 root@ubuntu:~/xpf#[$xx-lt$cc]&&echo1||echo0 1 root@ubuntu:~/xpf#[$xx-eq$cc]&&echo1||echo0 0 root@ubuntu:~/xpf#[$xx-ne$cc]&&echo1||echo0 1 利用[[ ]]和(( ))实现整数条件测试 root@ubuntu:~/xpf#[[$xx<$cc]]&&echo1||echo0 1 root@ubuntu:~/xpf#[[$xx>$cc]]&&echo1||echo0 0 root@ubuntu:~/xpf#(($xx<$cc))&&echo1||echo0 1 root@ubuntu:~/xpf#(($xx>$cc))&&echo1||echo0 0 关于整数的比较。(( ))语法要优先[[ ]],,但是还是首先推荐使用(),然后就是(( )),最后使用[[ ]]. 逻辑判断符: 在[ ]里面是哟个的操作符 在[[ ]]或者(( )) 使用的操作符 -a && 与 -o || 或 ! ! 非 逻辑操作符的实践事例 root@ubuntu:~/xpf#[-f"$ff"-a-f"$ccc"]&&echo1||echo0 0 root@ubuntu:~/xpf#[-f"$ff"-a-f"$xx"]&&echo1||echo0 1 root@ubuntu:~/xpf#[-f"$ff"-o-f"$xxx"]&&echo1||echo0 1 root@ubuntu:~/xpf#[-!"$ff"]&&echo1||echo0 bash:[:-!:unaryoperatorexpected 0 root@ubuntu:~/xpf#[!"$ff"]&&echo1||echo0 0 需要注意的是: “-a”和“-o”逻辑操作符符号需要用于[ ]中 && 和 || 逻辑操作符可用于[[]]和(( ))中,y饿可以外部连接多个[ ] 注意:在[ ]和[[ ]]的两端及比较符号的两端。必须要有空格 逻辑操作符企业案例 #!/bin/bash read-p"inputanum:"num#注意这里的空格以及:符号 if["$num"-eq1-o"$num"-eq2] then echo$num exit5 else echo"thisisbad" fi 使用脚本传参或者read读入的方法 没有使用if的情况下,判断两个大小,将大的数字输出。 错误的把<0的数排除 #!/bin/bash read-p"inputanum:"num read-p"ubputothernum:"num1 ["$num"-gt0-a"$num"-gt0]||exit5 [`expr$num+$num1`]||exit4 [$num-ge$num1]&&echo"$num"||echo"$num1" 第二种:传参判断 #!/bin/bash a=$1 b=$2 [$#-ne2]&&{ echo"pleasestwousage;" exit1 } expr$a+10>/dev/null aa=$? expr$b+10>/dev/null bb=$? [$aa-eq0-a$bb-eq0]||{ echo"thisisabadnum" exit } [$a-gt$b]&&echo""$a">"$b""||echo""$a"<"$b"" 写一个脚本,自动安装lamp或者lnmp。 要求: 当用户输入1时,输出“start install lamp”,提示执行/service/scripts/lamp.sh输出“lamp is installed” 并退出脚本 当用户输入2时,输出“start install lnmp”,提示执行/service/scripts/lamp.sh输出“lnmp is installed” 并退出脚本 当用户输入3时,退出 当用户输入其他时,报错退出 #!/bin/bash [-d"/service/scripts"]||mkdir-p/service/scripts echo"pleaesyourchoice." cat<<END 1.installlamp 2.installlnmp 3.exit END read-p"plzyourchoice:"num ["$num"-ne1-a"$num"-ne2-a"$num"-ne3]&&{ echo"inputerror" exit2 } if[$num-eq1];then echo"startinstalllamp" if[-x/server/scripts/lamp.sh];then source/service/scripts/lamp.sh>/dev/null exit$? else echo"bad" exit4 fi fi [$num-eq3]&&echoexit3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |