2015-06-25 57 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