bash - 比较输出而不是命令

标签 bash string-comparison

尝试创建一个脚本来读取远程文件并检查 md5 校验和并在不匹配时发出警报,但出现我无法理解的错误。

#!/bin/sh
REMOTEMD5=$(ssh user@host 'md5sum file.txt')
LOCALMD5=$(md5sum 'file.txt')
if [$LOCALMD5 !== $REMOTEMD5]
then
  echo "all OK"
else
  echo -e "no match, Local:"$LOCALMD5"\nRemote:"$REMOTEMD5
fi

这将返回 第 4 行:[6135222a12f06b2dfce6a5c1b736891e:找不到命令

我试过在 $LOCALMD5 周围使用 ' 或 ",但似乎永远无法用它来比较输出。我做错了什么? 谢谢

最佳答案

尝试;

if [ "$LOCALMD5" == "$REMOTEMD5" ]

哪个应该效果更好。

编辑:我认为您的代码中的 == 和 != 颠倒了。

关于bash - 比较输出而不是命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793558/

相关文章:

linux - 你如何给su当前用户环境变量

php - 为什么我不应该在 php 中使用 unix 命令?

JavaScript localeCompare() 返回与 JavacompareTo() 不同的结果

javascript - 为什么 'a' > 'A' 是真的?

bash - Bash 中的多重测试 [[ 表达式 ]]

linux - 在 Bash 输出中获取特定文本

linux - 使用curl或其他bash命令登录Apple开发者控制台

SQL 区分大小写的字符串与 like 和 "="的比较

php - 在 PHP/MySQL 中比较变量字符串相等性的最佳方法是什么?

c++ - 常量字符串地址