2016-03-19 121 views
1

我想比較兩個字符串,它們是相同的,因爲我可以將日誌調試下一行中看到:比較長字符串用空格

echo "line: $line" 
echo "fingerPrints:$i ${fingerPrints[$i]}" 

31 + echo 'line: DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D' 
32 + echo 'fingerPrints:1 DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D' 

但是當我嘗試一條線後,這些比較串,

if ["$line" ne "${fingerPrints[$i]}"]; then 

這是發生了什麼事:

33 + '[DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D' ne 
'DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D]' ./gentoo-stage.sh: 

line 33: [DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D: command not found 

我不是想檢查是否一個字符串包含鄰而且,只要他們是歐洲人。

同樣的結果,當我嘗試!=而不是ne

+0

可能重複[如何比較Bash中'if'語句中的兩個字符串變量?](http://stackoverflow.com/questions/4277665/how-do-i-compare-two-string-variables -in-AN-if語句,在-的bash) –

回答

2

您必須在[之後和]之前放置空格。因此,而不是:

if ["$line" ne "${fingerPrints[$i]}"]; then 

這樣寫:

if [ "$line" ne "${fingerPrints[$i]}" ]; then 

和 「呢」 是不是運營商。你可能意味着!=有:

if [ "$line" != "${fingerPrints[$i]}" ]; then 

順便說一句-ne用於比較整數表達式,你比較字符串,因此!=是真的,這裏唯一有意義的運營商。