检查 shell 中是否有非空字符串(而不是 !-z)

检查 shell 中是否有非空字符串(而不是 !-z)

我知道有一种方法可以做到这一点,但互联网搜索结果总是很糟糕 -

我想要做:

if [[ ! -z "$var" ]]; then
   # ....
fi

但我一时想不起来了,我想是这样的:

if [[ -p "$var" ]]; then
   # ....
fi

或者像这样:

if [[ -n "$var" ]]; then
   # ....
fi

有人可以提供一个会出现在搜索引擎中的好答案吗,希望如果我将标题编辑为最佳,它也会有所帮助。

答案1

您需要-n测试(“如果给定字符串的长度非零,则为 true”),这与测试-z(“如果给定字符串的长度为零,则为 true”)相反。

测试-p是完全不同的(“如果给定文件存在并且是命名管道,则为 true”)。

您可以在交互式bashshell 中输入以下内容来获取此信息

help test

这将为您提供内置test实用程序的文档(这[是; see 的另一个变体help [,并且[[使用与; see 相同的测试help [[)。您还可以查看bash系统上的手册 ( man bash),该手册记录在标题为“条件表达式”。

因此,您的代码将是以下之一

if [[ -n $var ]]; then ...; fi
if [ -n "$var" ]; then ...; fi
if test -n "$var"; then ...; fi

话虽如此,我认为没有什么问题

if [[ ! -z $var ]]; then ...; fi

例如,如果您想要确保该值是空的,并且想要在该值不为空时输出错误消息。然后,代码将记录您的意图:“如果这是不是空的,有问题”。这是一个品味问题。

相关内容