2014-02-07 4 views
0

Я относительно новым Баш и я пытаюсь сделать это:Как я могу правильно форматировать эту инструкцию bash if?

COMPARE2=$(tail -n 1 $LOGFILE) 
echo "$COMPARE2" 
if [ "$COMPARE" != "$COMPARE2" ] 
    then 
    echo "Server not responding, killing process..." 
# kill $(ps aux | grep 'craftbukkit.jar' | awk '{print $2}') 
fi 

По существу, если СРАВНИТЬ не соответствует COMPARE2, я хочу, чтобы выполнить команду. Если он равен, ничего не делайте.

В настоящее время COMPARE и COMPARE2 не совпадают, но он выполняет эхо «сервер не отвечает» в любом случае.

Что я делаю неправильно? Благодаря! !

+3

У вас есть a = = в условии if, поэтому правильно, что эхо-эхо выполнено – drolando

ответ

0

= означает «Не равно», так что ваш код высказывание:

Если сравнение не равно Compare2 затем эхо «Сервер не отвечает, убивая процесс ...»

Вам нужно для изменения! = to = для проверки равенства. ! = проверяет на неравенство.

+0

А, это имеет смысл. Но теперь это дает мне ошибку «неожиданного оператора». – user3273395

+1

@ user3273395 Вы пытаетесь '=='? '==' не является допустимым оператором для теста с одиночной скобкой '[]', но вы можете просто переключиться на '[[]]' (которые являются предпочтительными для большинства случаев с чистым басом в любом случае из-за дополнительной функциональности), и это должно Работа. – BroSlow

+0

Как бы вы это написали? Я попытался, если [["$ COMPARE"! = "$ COMPARE2"]], и если [["$ COMPARE"! = "$ COMPARE2"]], но это не сработало. – user3273395

Смежные вопросы