2012-08-29 37 views
0

以下bash腳本是給我的問題:如何比較在bash中包含尖括號'<'的字符串?

#!/bin/bash 

if [[ $VAR -eq "<EMPTY>" ]]; then echo "Hello World!"; fi 

擊失敗,抱怨:

line 3: [[: <EMPTY>: syntax error: operand expected (error token is "<EMPTY>") 

如何測試是否包含在VAR字符串等同於字符串"<EMPTY>"

回答

4

您使用了錯誤的操作。 ==用於字符串,-eq用於數字。

#!/bin/bash 

if [[ $VAR == "<EMPTY>" ]]; then echo "Hello World!"; fi 
+0

在'[['中,您不必引用不存在的VAR。 – choroba

+0

@choroba - 謝謝。修復。 –

2

Inside [[ ... ]]-eq具有不同的含義:它用於比較整數。不過,您可以使用((...))來比較integeres與普通操作符。使用字符串如下:

[[ $VAR == "<EMPTY>" ]] 
+0

'-eq'在'[[...]]'內仍有意義。這意味着「如果arg1等於arg2,則返回true」,根據bash手冊頁。它的操作數必須是整數。 –

+0

@Robᵩ更新,謝謝。 – choroba