3 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
(通常)正確的方法
if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi
${var+x}
var
x
引號(hào)離題
${var+x}
"${var+x}"
x
[ -z ]
[ -z "" ]
[ -z "${var+x}" ]
(經(jīng)常)走錯(cuò)了路
if [ -z "$var" ]; then echo "var is blank"; else echo "var is set to '$var'"; fi
var=''
[ -z "$var" ]

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
if [ -n "$1" ]
-z
-n
-z
.
if [ -n "$1" ]; then echo "You supplied the first parameter!"else echo "First parameter not supplied."fi

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
下面是如何測(cè)試參數(shù)是否是未定,或空(“空”)或用值設(shè)置:
+--------------------+----------------------+-----------------+-----------------+
| | parameter | parameter | parameter |
| | Set and Not Null | Set But Null | Unset |
+--------------------+----------------------+-----------------+-----------------+
| ${parameter:-word} | substitute parameter | substitute word | substitute word |
| ${parameter-word} | substitute parameter | substitute null | substitute word |
| ${parameter:=word} | substitute parameter | assign word | assign word |
| ${parameter=word} | substitute parameter | substitute null | assign word |
| ${parameter:?word} | substitute parameter | error, exit | error, exit |
| ${parameter?word} | substitute parameter | substitute null | error, exit |
| ${parameter:+word} | substitute word | substitute null | substitute null |
| ${parameter+word} | substitute word | substitute word | substitute null |
+--------------------+----------------------+-----------------+-----------------+
在以“替代”表示的所有情況下,表達(dá)式都將替換為所顯示的值。在所有用“賦值”顯示的情況下,都為參數(shù)賦值,這也替換了表達(dá)式。
添加回答
舉報(bào)