2015-06-25 87 views
0

我寫了下面的bash腳本:擊:比較兩個字符串發出

#!/bin/bash 
value="Maria Ion Gheorghe Vasile Maria Maria Ion Vasile Gheorghe" 
value2="Maria Ion Gheorghe Vasile Maria Maria Ion Vasile Gheorghe" 
if [[ "$value"!="$value2" ]]; then 
     echo "different" 
else 
     echo "match" 
fi 

的問題是,我的腳本總是顯示「不同」,儘管存儲在價值和value2的變量字符串不一樣。 bash實際上比較什麼?

而另一個問題涉及到這個問題。突然想到說,我們有:

v1 = grep 'a' a.txt 
v2 = grep 'a' b.txt 

,我們可以存儲和grep的,如果結果是巨大的比較這變量(可以說超過50000行每variabile的)?

+1

關於第二個問題,shell會將其解釋爲試圖執行名爲'v1'和'v2'的命令,這可能不是您想要的。也許你的意思是'v1 = $(grep'a'a.txt)' –

+0

請看一下:http://www.shellcheck.net/ – Cyrus

回答

3

您需要在情況周圍的比較操作空間:

if [[ "$value" != "$value2" ]]; then 
     echo "different" 
else 
     echo "match" 
fi 

如果你不這樣做,你只是測試一個字符串 - 從字面上Maria Ion Gheorghe Vasile Maria Maria Ion Vasile Gheorghe!=Maria Ion Gheorghe Vasile Maria Maria Ion Vasile Gheorghe和病情會總是評估爲真,從而產生different