linux 判断变量的长度,在Bash中判断变量是否set,是否长度为0

如何在Bash中判断变量是否set,是否长度为0,请看文本的代码示例:

Bash判断变量是否set的代码:

[xinlin@ifos ~]$ unset gg

[xinlin@ifos ~]$ if [ -v gg ]; then echo 'gg is set'; else echo 'gg is not set'; fi

gg is not set

[xinlin@ifos ~]$ gg=

[xinlin@ifos ~]$ if [ -v gg ]; then echo 'gg is set'; else echo 'gg is not set'; fi

gg is set

[xinlin@ifos ~]$ gg=123

[xinlin@ifos ~]$ if [ -v gg ]; then echo 'gg is set'; else echo 'gg is not set'; fi

gg is set

需要注意的是,条件判断-v后面跟变量名。

Bash判断变量长度是否为0的代码:

[xinlin@ifos ~]$ unset gg

[xinlin@ifos ~]$ if [ -z $gg ]; then echo 'zero length'; else echo 'not zero length'; fi

zero length

[xinlin@ifos ~]$ gg=

[xinlin@ifos ~]$ if [ -z $gg ]; then echo 'zero length'; else echo 'not zero length'; fi

zero length

[xinlin@ifos ~]$ gg=123

[xinlin@ifos ~]$ if [ -z $gg} ]; then echo 'zero length'; else echo 'not zero length'; fi

not zero length

[xinlin@ifos ~]$ gg=''

[xinlin@ifos ~]$ if [ -z $gg ]; then echo 'zero length'; else echo 'not zero length'; fi

zero length

需要注意的是,条件判断-z后面跟的是string。

以上代码,gg是变量名,$gg是变量的值(没有加双引号,也没有大括号,如:${gg})。

记住:Bash里面的变量的值,都是字符串,Bash可以理解为只有唯一字符串类型的脚本语言,数值计算也是讲字符串转为数字,比较判断,一定要注意,是在做字符串比较,还是在做转换后的数值比较。

补充:

通过read命令生成的变量,就算没有值,也已经set:

[xinlin@ifos ~]$ unset jkk

[xinlin@ifos ~]$ echo -n 'input:';read jkk

input:  # 这里直接回车

[xinlin@ifos ~]$ if [ -v jkk ]; then echo 'jkk is set'; else echo 'jkk is not set'; fi

jkk is set

[xinlin@ifos ~]$ echo ${#jkk}

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值