我编写了以下 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
问题是我的脚本总是显示“不同”,即使存储在 value 和 value2 变量中的字符串没有不同。 bash 实际上比较了什么?
还有一个问题与此问题相关。假设我们有:
v1 = grep 'a' a.txt
v2 = grep 'a' b.txt
如果 grep 结果很大(假设每个变量超过 50000 行),我们可以存储和比较这些变量吗?
~
最佳答案
您需要在条件中的比较运算符周围留一个空格:
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
和条件将始终评估为 true,从而产生 different
。
关于linux - Bash:比较两个字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048817/