2012-01-09 2 views
9

Попытка создать сценарий для чтения удаленного файла и проверить контрольную сумму md5 и оповещение, если несоответствие, но получение ошибки, я не могу понять.Bash сравните выходные данные, а не команду

#!/bin/sh 
REMOTEMD5=$(ssh [email protected] '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, но кажется, никогда не в состоянии получить это сравнить выходные. Что я делаю неправильно? Спасибо

ответ

14

Попробуйте,

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

который должен работать лучше

.

Редактировать: Я думаю, что вы получили == и! = Обратный код.

+0

Спасибо за попытку, однако это все еще возвращает команду не найдена – moztech

+0

Странно, отлично работает для меня, когда я запускаю ее. Каково конкретное сообщение об ошибке сейчас? –

+0

Хорошо, я пробовал сегодня так много способов, что мои глаза говорили мне ложь. Теперь корректно работает – moztech

7

Я думаю, что это должно быть так:

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

Пространство между кронштейном и значение важно!

+0

Очень близко, я теперь получаю 'не ровня, Local: 6135222a12f06b2dfce6a5c1b736891e file.txt Пульт дистанционного управления: 6135222a12f06b2dfce6a5c1b736891e file.txt' – moztech

+0

Значения идентичны -> ваше состояние говорит, что если значения не равны сценарий должен печатать нормально .. .., кажется мне хорошо! – Mithrandir

+0

Спасибо, как отметил @JoachimIsaksson, у меня была моя логика, отменившаяся от предыдущей попытки, а также некорректный код – moztech

4

[ не является синтаксисом bash, это команда. Поэтому у вас должно быть пространство между ним и его первым аргументом $LOCALMD5. Также должно быть пространство между $REMOTEMD5 и ].