( test -n $st ) != ( test -z $st ) 對嗎?

( test -n $st ) != ( test -z $st ) 對嗎?

當我讀到時,

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)通常都可以工作,但是,這是一種不安全的做法。始終引用經過測試的字串。其他比較運算符

相關內容