2
我在bash中的測試語法中犯了一個錯誤,但現在我想了解在使用-n
和-z
進行字符串檢查時發生了什麼。 我寫了以下幾行來獲取LINENUM
變量grep
的行號。當沒有找到字符串(文件中只有一個,肯定)時,LINENUM
變量爲空。bash中的字符串檢查與-z和-n
$ 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
所以,在前測試中,在那裏我忘了雙引號,對什麼做的,如果測試檢查,真的,因爲我得到了兩個來自-n
和-z
的正面檢查?
如果使用雙括號:'[[...]]',則不需要引用變量 - 即使它具有嵌入空格。 – cdarke 2013-05-03 09:57:40