比较输出而不是命令



试图创建一个脚本来读取远程文件并检查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

这将返回line 4: [6135222a12f06b2dfce6a5c1b736891e: command not found

我试过在$LOCALMD5周围使用"或",但似乎从来没能用它来比较输出。我做错了什么?感谢

Try;

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

这应该效果更好。

编辑:我想你得到了==和!=在代码中反转。

我认为应该是这样的:

#!/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

括号和值之间的空格很重要!

[不是bash语法,它是一个命令。所以在它和它的第一个参数$LOCALMD5之间必须有一个空格。在$REMOTEMD5]之间也需要有一个空间。