Alexander Mills Asked: 2020-03-04 21:31:37 +0800 CST2020-03-04 21:31:37 +0800 CST 2020-03-04 21:31:37 +0800 CST 检查外壳中的非空字符串(而不是!-z) 772 我知道有一种方法可以做到这一点,但互联网搜索结果总是很糟糕 - 我想要做: if [[ ! -z "$var" ]]; then # .... fi 但我永远记不得了,我想是这样的: if [[ -p "$var" ]]; then # .... fi 或像这样: if [[ -n "$var" ]]; then # .... fi 有人可以提供一个很好的答案,它将出现在搜索引擎中,希望如果我将标题编辑为最佳,它也会有所帮助。 bash shell 1 个回答 Voted Best Answer Kusalananda 2020-03-06T02:46:38+08:002020-03-06T02:46:38+08:00 您想要-n测试(“如果给定字符串的长度不为零则为真”),这与-z测试相反(“如果给定字符串的长度为零则为真”)。 -p测试完全不同(“如果给定文件存在并且是命名管道,则为真”)。 您可以通过键入在交互式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 例如,如果您想要确保该值是空的,并且想要在它不为空时输出错误消息。然后,该代码将记录您的意图:“如果这不是空的,则说明有问题”。这是一个品味问题。
您想要
-n
测试(“如果给定字符串的长度不为零则为真”),这与-z
测试相反(“如果给定字符串的长度为零则为真”)。-p
测试完全不同(“如果给定文件存在并且是命名管道,则为真”)。您可以通过键入在交互式
bash
shell中获得此信息它将为您提供内置
test
实用程序的文档(它[
是另一种变体;seehelp [
,并且[[
使用相同的测试;seehelp [[
)。您还可以查看bash
系统上的手册 (man bash
),其中记录在标题为“条件表达式”的部分下。因此,您的代码将是其中之一
说了这么多,我觉得没什么不好
例如,如果您想要确保该值是空的,并且想要在它不为空时输出错误消息。然后,该代码将记录您的意图:“如果这不是空的,则说明有问题”。这是一个品味问题。