shell每日一练: 之 字符串 -z, -n 判断

https://blog.csdn.net/Michaelwubo/article/details/81698307

== 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。

= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的,例如:

1

2

3

4

s1="foo"

s2="foo"

[ $s1=$2 ] && echo "equal"

[ $s1==$2 ] && echo "equal"

最后两个语句是等价的

在 (( )) 中 = 表示赋值, == 表示判断(整数比较),它们不等价,比如

1

2

3

((n=5))

echo $n

((n==5)) && echo "equal"

((n=5)) 表示赋值,((n==5)) 表示判断。

 

 

-n : 字符串长度不等于 0 为真 .  example :   VAR1=1;VAR2=""[ -n "$VAR1" ]为 true[ -n "$VAR2" ]为 false .

-z  : 字符串长度等于 0 为真  .    example :   VAR1=1;VAR2=""[ -z "$VAR1" ]为 false[ -z "$VAR2" ]为 true .

str :  字符串存在为真 .               example :  VAR1=1;VAR2=""[ $VAR1 ]为 true[ $VAR2 ]为 false .

 

需要注意的是,使用-z 或-n 判断字符串长度时,变量要加双引号。

举例说明:

# [ -z $a ] && echo yes || echo no

yes

# [ -n $a ] && echo yes || echo no

yes

# 加了双引号才能正常判断是否为空

# [ -z "$a" ] && echo yes || echo no

yes

# [ -n "$a" ] && echo yes || echo no

no

# 使用了双中括号就不用了双引号

# [[ -n $a ]] && echo yes || echo no

no

# [[ -z $a ]] && echo yes || echo no

yes

 

/ ----------------------second -----------part   /

Linux shell if [ -n ] 正确使用方法

https://www.cnblogs.com/ariclee/p/6137456.html

 

if [ str1 = str2 ]       当两个串有相同内容、长度时为真 
if [ str1 != str2 ]      当串str1和str2不等时为真 
if [ -n str1 ]       当串的长度大于0时为真(串非空) 
if [ -z str1 ]        当串的长度为0时为真(空串) 
if [ str1 ]         当串str1为非空时为真

shell 中利用 -n 来判定字符串非空。

错误用法:

ARGS=$*

if [ -n $ARGS  ]

then

   print "with argument"

fi

print " without argument"

不管传不传参数,总会进入if里面。

原因:因为不加“”时该if语句等效于if [ -n ],shell 会把它当成if [ str1 ]来处理,-n自然不为空,所以为正。

 

正确用法:需要在$ARGS上加入双引号,即"$ARGS".

 

ARGS=$*

if [ -n "$ARGS"  ]

then

   print "with argument"

fi

print " without argument"

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值