我知道有一种方法可以做到这一点,但互联网搜索结果总是很糟糕 -
我想要做:
if [[ ! -z "$var" ]]; then
# ....
fi
但我一时想不起来了,我想是这样的:
if [[ -p "$var" ]]; then
# ....
fi
或者像这样:
if [[ -n "$var" ]]; then
# ....
fi
有人可以提供一个会出现在搜索引擎中的好答案吗,希望如果我将标题编辑为最佳,它也会有所帮助。
答案1
您需要-n
测试(“如果给定字符串的长度非零,则为 true”),这与测试-z
(“如果给定字符串的长度为零,则为 true”)相反。
测试-p
是完全不同的(“如果给定文件存在并且是命名管道,则为 true”)。
您可以在交互式bash
shell 中输入以下内容来获取此信息
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
例如,如果您想要确保该值是空的,并且想要在该值不为空时输出错误消息。然后,代码将记录您的意图:“如果这是不是空的,有问题”。这是一个品味问题。