微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – bash空字符串比较问题

我知道我可以使用-z测试字符串是否为空,并使用-n测试字符串是否为空.所以我在ubuntu 10.10中编写了一个脚本:

#!/bin/bash
A=
test -z $A && echo "A is empty"
test -n $A && echo "A is non empty"
test $A && echo "A is non empty" 

str=""
test -z $str && echo "str is empty"
test -n $str && echo "str is non empty"
test $str && echo "str is non empty" 

令我惊讶的是,它输出

A is empty
A is non empty
str is empty
str is non empty

我认为它应该是

A is empty
str is empty

可以任何Linux专家解释原因吗?

谢谢.

解决方法:

这是解析Bash命令行的方式的结果.变量替换在构造(基本)语法树之前发生,因此-n运算符不会将空字符串作为参数,它根本没有参数!通常,您必须将任何变量引用括在“”中,除非您可以肯定它不是空的,正是为了避免这种和类似的问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐