2013-02-28 5 views
0
#!/bin/bash 
value=$(</var/www/sym_monitor/man_mon.txt) 
value2=$(</var/www/sym_monitor/panel_mon.txt) 

pro=$(ps -ef |grep sym |grep -v grep |awk '{ print $2 }') 
echo "$pro"; 
echo "STARTED"; 

if [ "$value" == "false" ]; then 


cd /var/www/symmetric-ds-3.1.6/bin; 
sleep 30; 
(sudo ./sym --port 8082 --server); 
#(sudo /bin/bash /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server); 

echo "IF"; 


else 
if [ "$value2" == "false" ]; then 


cd /var/www/symmetric-ds-3.1.6/bin; 
sleep 30; 
(sudo ./sym --port 8082 --server); 
#(sudo /bin/bash /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server); 
echo "ELSEIF"; 

else 
if[ "$pro" == "" ]; then 

echo "pro"; 
cd /var/www/symmetric-ds-3.1.6/bin; 
sleep 30; 
(sudo ./sym --port 8082 --server); 
fi 
fi 
fi 


echo "END"; 

В приведенном выше скрипте в последнем случае, если дается синтаксическая ошибка. Есть идеи? В переменной $ pro, даже если такой процесс не запускает некоторые идентификаторы процесса? Зачем?else if в bash script дает ошибку

Перед тем, как этот сценарий выглядит ниже и работает абсолютно нормально.

#!/bin/bash 
    value=$(</var/www/sym_monitor/man_mon.txt) 
    value2=$(</var/www/sym_monitor/panel_mon.txt) 

if [ "$value" == "false" ]; then 

    cd /var/www/symmetric-ds-3.1.6/bin; 
    sleep 30; 
    (sudo ./sym --port 8082 --server); 
    #(sudo /bin/bash /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server); 


    elif [ "$value2" == "false" ]; then 

    cd /var/www/symmetric-ds-3.1.6/bin; 
    sleep 30; 
    (sudo ./sym --port 8082 --server); 
    #(sudo /bin/bash /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server); 

    fi 

Это первая версия скрипта, которая работала абсолютно нормально. Но я должен добавить к нему еще одно условие, которое, если ни один процесс не работает, как упоминалось в первом скрипте выше, тогда код в состоянии должен работать. Я не знаю, почему, несмотря на отсутствие процесса, он дает некоторые числа в значение $ pro. Есть идеи?

+0

Какова была ошибка? – FatalError

+0

попытаться исправить отступа. Его вероятное что вы найдете ошибку при этом. – hek2mgl

+0

Некоторые исправления стиля, кроме фактической ошибки: не используйте ';' в конце строк в сценариях оболочки и используйте 'elif' вместо' else if' (а также удалить дополнительную 'fi's). Также есть ли какая-либо причина, по которой вы выполняете команды' sudo' в подоболочках (с круглыми скобками)? –

ответ

7

Там должен быть пробел между «если и„[“как if [. (Проверка линии нет 31)
Чтобы избежать таких ошибок читать man bash