2013-02-15 228 views
0

我想知道字符串變量是否爲空。我通過將變量與字面空字符串("")進行比較來完成此操作。shell - 將字符串與變量(字符串或數字)進行比較

這裏是我的代碼:

var=$1 

if [$var == ""]; then 
    echo "\$var is $var" 
fi 

它給了我這個錯誤時$1""(無命令行參數(S)):

./script.sh: line 5: [: ==: unary operator expected 

$1有一個價值,它的工作原理精細。

我試過下面的東西,他們仍然給了我一個錯誤:

  1. 更改==-eq
  2. 周圍$var""
  3. space放在""的內部使其成爲" "
  4. 1-3

不同組合我希望能夠給一個字符串變量(空或不)與""比較。

+0

您正在使用哪個外殼? – iamnotmaynard 2013-02-15 16:13:53

回答

2

因爲它是一個命令名稱,所以在前面的括號([)之後應該總是有一個空格。

的方式來最接近做你自己:if [ "$var" = "" ]; then...

另一種方式來做到這一點(-n斷言其測試非空):if [ -n "$var" ]; then...

雙引號$var是必需的。

+0

賓果!謝謝! – 2013-02-15 16:21:40

+0

爲了保持與原始測試相同的意義,您希望使用'[-z「$ var」]'(-z:如果參數爲零長度字符串,則爲true) – William 2013-02-15 17:09:01

相關問題