2016-02-12 57 views
1

在一些古老的Shell腳本用於Solaris,我發現下面的形式來檢查,如果一個變量是空的:哪個`[`不能比較空字符串?

[ x"$var" = x ] 

在當前的Linux系統,我將它寫就像

[ "$var" = "" ] 

[ -z "$var" ] 

哪個版本的[實際上需要第一個符號?

回答

1

無。從[]到test的別名出現在測試選項-z後面。因此,如果您可以使用[ x"$var" = x],您還可以編寫[ -z "$var" ]

+0

它的原因是什麼? – ceving

+1

@ceving爲避免不安全實現的問題,如果測試一些字符串,如「-o a = a」。見http://www.in-ulm.de/~mascheck/various/test/ – Dunatotatos