我在 bash 中的测试语法中犯了一个错误,但现在我想了解使用-n
and进行字符串检查时到底发生了什么-z
。我写了以下几行来从LINENUM
变量中获取行号grep
。当找不到字符串时(文件中肯定只有一个),LINENUM
变量为空。
$ LINENUM=$(grep -w -n mystring myfile | cut -d: -f1)
$ echo --$LINENUM--
----
$ if [ -n $LINENUM ] ; then echo "Checked -n"; fi
Checked -n
$ if [ -z $LINENUM ] ; then echo "Checked -z"; fi
Checked -z
然后我意识到我忘记了双引号,然后给了我以下检查:
$ if [ -n "$LINENUM" ] ; then echo "Checked -n"; fi
$ if [ -z "$LINENUM" ] ; then echo "Checked -z"; fi
Checked -z
所以,在以前的测试中,我忘记了双引号,而 if 测试检查了什么,真的,因为我得到了两个积极的检查-n
和-z
?