试图创建一个脚本来读取远程文件并检查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
和]
之间也需要有一个空间。