( test -n $st ) != ( test -z $st ) 對嗎? 2024-5-27 • shell-script test 當我讀到時, test -n $string$string==> 如果是則退出狀態為 0不為空, 1 否則 和 test -z $string==> 退出狀態為 0 如果$string 一片空白, 1 否則 但在這個特定的例子中,(我試圖創建一個空字串)似乎我錯過了一些東西。 #!/bin/sh str="" test -n $str echo $? test -z $str echo $? 其輸出為: 0 0 任何人都可以解釋這種奇怪的行為嗎? 答案1 放在$str雙引號裡面! -n 測試要求將字串放在測試括號內。使用 ! 的不含引號的字串-z,或甚至只是測試括號內的不含引號的字串(請參閱範例 7-6)通常都可以工作,但是,這是一種不安全的做法。始終引用經過測試的字串。其他比較運算符 相關內容