尝试创建一个脚本来读取远程文件并检查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周围使用'或',但似乎从来没有能够比较输出。我做错了什么? 感谢
答案 0 :(得分:21)
尝试;
if [ "$LOCALMD5" == "$REMOTEMD5" ]
应该更好。
编辑:我认为你的代码中有==和!=颠倒了。
答案 1 :(得分:8)
我认为应该是这样的:
#!/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
括号和值之间的空间很重要!
答案 2 :(得分:6)
[
不是bash语法,它是一个命令。所以你必须在它和它的第一个参数$LOCALMD5
之间留一个空格。 $REMOTEMD5
和]
之间也需要有空格。