linux - Bash:比较两个字符串问题

标签 linux bash

我编写了以下 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/

相关文章:

bash - 使用管道命令忽略 Bash 脚本中的 HUP 信号

RMarkdown 从 bash block 访问参数

python - 如何将 Python 变量传递给 Bash?

bash - 在返回/退出函数之前弹出

linux - 为什么 bash 在不同风格的 linux/unix 中看起来不同?

linux - 尝试从不同位置运行 shell 脚本,但错误提示我正在尝试创建目录

php - Apache 使用 http 和 https 设置多个域

使用 C 计算行数

linux - 如何每隔一小时杀死一次日志运行作业?

Java设置本地IP地址而不更改代码