Shell笔记之浅析字符串运算符 -z 和 $ 的区别

shell脚本字符串运算符之-z和$的区别

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

运算符说明举例
=检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。
!=检测两个字符串是否不相等,不相等返回 true。[ $a != $b ] 返回 true。
-z检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。
-n检测字符串长度是否不为 0,不为 0 返回 true。[ -n “$a” ] 返回 true。
$检测字符串是否不为空,不为空返回 true。[ $a ] 返回 true。

其中,-z 和 $ 的功能有异曲同工之妙,所以笔者想要对它们的区别一探究竟。脚本如下:

#!/bin/bash
a=""
b=" "
c="i"
d="  "
if [ "$a" ];then
  echo "a不为空"
else
  echo "a为空"
fi

if [ "$b" ];then
  echo "b不为空"
else
  echo "b为空"
fi

if [ "$c" ];then
  echo "c不为空"
else
  echo "c为空"
fi

if [ "$d" ];then
  echo "d不为空"
else
  echo "d为空"
fi

if [ -z "$a" ];then
  echo "a长度为0"
else
  echo "a长度不为0"
fi

if [ -z "$b" ];then
  echo "b长度为0"
else
  echo "b长度为${#b}"
fi

if [ -z "$c" ];then
  echo "c长度为0"
else
  echo "c长度为${#c}"
fi

if [ -z "$d" ];then
  echo "d长度为0"
else
  echo "d长度为${#d}"
fi

结果如下:

a为空
b不为空
c不为空
d不为空
a长度为0
b长度为1
c长度为1
d长度为2

从结果来看,在shell脚本中,空格被看作是普通字符

结论:在shell中,字符串长度为0等价于字符串为空。所以字符串运算符 -z 和 $ 在使用上没有区别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值