首页 > 解决方案 > 与 linus 条件 '-z' '-n' 混淆

问题描述

这是我的脚本:

#!/bin/bash

read -p "para:" teatp

if [ -z $teatp ]; then
    echo '-z is ture'
else
    echo '-z is false'
fi

if [ -n $teatp ]; then
    echo '-n is ture'
else
    echo '-n is false'
fi

当我什么都不输入并按回车时,结果是

para:
-z is ture
-n is ture

另一方面,当我输入一些东西并按回车时,结果是

para:qwer1234
-z is false
-n is ture

让我感到困惑的是第一个结果-n is ture。我认为-nand-z是反义词,但为什么结果是一样的呢?一定有什么我忽略或误解的。如果有人能指出,我将不胜感激

标签: linuxconditional-statements

解决方案


#testp应该用双引号引起来吗喜欢:

[ -n "$teatp" ]

推荐阅读