linux - Bash 空二元运算符

标签 linux bash binary-operators

我最近进行的测试对以下 bash 命令的输出有疑问:

var=; [ -n $var ]; echo $?; [ -z $var ]; echo $?

结果为 00,表明两个一元运算符的返回码都没有错误。这意味着 $var 解析为 null(空)和 'non-null'(非空),对吗?

这怎么可能?

最佳答案

不,这意味着 [ 无法修复。在这两种情况下,$var 的计算结果为空,命令只是分别执行 [ -n ][ -z ],这两个结果事实上。如果您想测试变量本身的值,那么您必须引用它以正确处理它。

$ var=; [ -n "$var" ]; echo $?; [ -z "$var" ]; echo $?
1
0

关于linux - Bash 空二元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906835/

相关文章:

python - 为 pysqlite3 数据库创建类似 "less"的控制台寻呼机界面

C 宏、makefile 和表达式无法按预期工作

c++ - 带有截断下溢的字符减法

linux - 如何在循环中更改文件名?

c - 一元减号等于 binop 减号吗?

Python 二进制到一元函数

检查消息队列是否存在

c++ - c++ 11中结构数组的大括号初始化

python - 在 linux 脚本中是什么意思? #!/usr/bin/python -tt

bash - Gradle输出在VS Code的bash终端中未正确格式化