nixp.ru v3.0

24 января 2017,
вторник,
20:25:45 MSK

Аутсорсинг Linux с компанией «Флант»
anonymous написал 17 июня 2005 года в 01:49 (450 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

В общем есть скрипт и GNU Bash 3.0.0. Почему-то вот в этом скрипте интерпретатор ругается на последнюю строку

./start.sh: line 35: syntax error near unexpected token `done'

./start.sh: line 35: `done;'

#! /bin/bash

#Скрипт поддержки работоспособности серверов еА by Daven

echo «=================================================»

echo «Запуск скрипта поддержки работоспособности еАфины»

echo «=================================================»

while [ true ];

do

l="$(eval ps ax | grep -e 'login-server_sql' -c | awk '{ print $1 }’)»

m="$(eval ps ax | grep -e 'map-server_sql' -c | awk '{ print $1 }’)»

c="$(eval ps ax | grep -e 'char-server_sql' -c | awk '{ print $1 }’)»

if [ "$l" >= "2" ]; then

echo «Сервер логинов работает… Проверяем дальше…»

else

echo «Сервер логинов накрылся. Запускаем…»

nohup /root/athena/login-server_sql;

fi

if [ "$c" >= "2" ]; then

echo «Сервер персонажей работает… Проверяем дальше…»

else

echo «Сервер персонажей накрылся. Запускаем…»

nohup /root/athena/char-server_sql

fi

if [ "$m" >= "2" ]; then

echo «Сервер карт работает… Проверяем дальше…»

else

echo «Сервер карт накрылся. Запускаем…»

nohup /root/athena/map-server_sql

fi

echo «Проверка окончена…»

sleep 10;

done;

anonymous

Точку с запятой не надо ставить в конце

Genie

нет, скорее bash недоволен отсутствием в конце файла пустой строчки.

последняя строчка должна быть пустой (либо быть комментарием, начинаясь с #)

или вот в этом месте:

while [ true ];

do

вот тут и квадратные скобки можно опустить, и точка с запятой при записи do на другой строке не нужна.

allez

Дело не в точках с запятой и не в пустых последних строках, а скорее всего в вашей версии bash. Я выполнил ваш скрипт на bash-2.05 в том виде, в каком он приведен здесь и никаких проблем не возникло.

Пришлось только заменить конструкции вида [ "$l" >= "2" ] на [ $l -ge 2 ], так как при сравнении строк используются только унарные операторы.

metal

Я выполнил его на bash 3.0 и тоже никаких проблем

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.