字符串测试表达式

前端之家收集整理的这篇文章主要介绍了字符串测试表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

常用字符串测试操作符


-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
原文链接:https://www.f2er.com/bash/388837.html

猜你在找的Bash相关文章