2012-04-20 33 views
1

我想給一個變量比較:比較目錄名與字面返回一個意外的錯誤

DIR=$(pwd | cut -d '/' -f7,8) 

一個字符串:

NAME="IOPs/All_Brush" 

我的if語句是:

if [ $DIR <> $NAME ]; then 
    blah blah 
fi 

返回此錯誤:

line 18: IOPs/All_Brush: No such file or directory 

這是怎麼回事?我很確定我已經忘記了一些非常基本的東西,但目前我很茫然。我想逃脫斜線,但沒有工作

回答

2

<>是一個雙向重定向,而不是比較運算符。如果有空格或其他特殊字符,並且理想情況下使用[[,則還需要使用引號。

if [[ "$DIR" != "$NAME" ]]; then 
    : do something here 
fi 
+0

'[['不是POSIX,它是bash特有的。 – c00kiemon5ter 2012-04-21 00:06:35

+0

@ c00kiemon5ter,請參閱http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html以獲得'[['。所以,這是一個準標準。 (實際上我認爲它不是POSIX,而是SVID; misspoke。) – geekosaur 2012-04-21 00:10:47

+0

'[[''肯定不是POSIX。它僅適用於Bash和Korn shell。它不是'if'語法的一部分,也不是''if語法的一部分。 '['是一個命令,'[['只是一個shell關鍵字。我不知道SVID是否定義它。 – c00kiemon5ter 2012-04-21 00:20:19