Shell 脚本中判断字符串非空

前言

Shell 脚本中经常用到字符串,对字符串是否为空的判断很关键。

正文

在 Shell 中利用 -n 来判断字符串是否非空。

例子:


if [[ str1 = str2 ]]   # 当字符串 str1 和 str2 有相同内容、长度时为真

if [[ str1 != str2 ]]  # 当字符串 str1 和 str2 不等时为真

if [[ -n "str1" ]]       # 当字符串 str1 的长度大于 0(非空)时为真 

if [[ -z "str1" ]]	   # 当字符串 str1 的长度为 0(空)时为真 

if [[ str1 ]]          # 当字符串 str1 为非空时为真

注意

错误用法:


str1=$*

if [[ -n $str1 ]];then
    print "with str1"
else
    print "without str1"
fi

这种情况下不管传不传参数,总会进入 if 里面,因为不加 "" 时该 if 语句等效于 if [ -n ],shell 会把它当成 if [ str1 ]来处理,-n 这个字符串不为空,所以会进入 if 里面。

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


str1=$*
if [[ -n "$str1" ]];then
    print "with str1"
else
    print "without str1"
fi

额外内容

在 Shell 脚本中如果有 rm -rf ${path} 这种操作,尽量在执行前先判断变量 path 不为空,如果 path 为空,等同于执行 rm -rf / ,除此之外,在 Bash 的变量扩展语法中,可以用 rm -rf ${path:?ERROR}/* 的形式判断变量是否定义或为空,当变量未定义或为空时自动停止执行脚本,这样可以避免执行全局删除操作。

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值