2013-02-28 40 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"; 

在上面的脚本中最后一个else if给出语法错误。任何想法?在变量$ pro中,即使没有运行某个进程ID的进程正在打印?为什么?否则,如果在bash脚本中发生错误

之前,该脚本看起来像下面,并工作绝对好。

#!/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 2013-02-28 05:10:43

+0

尝试纠正缩进的空间。它可能在执行此操作时会发现错误 – hek2mgl 2013-02-28 05:11:13

+0

除了实际的错误之外,还有一些样式更正:不要在shell脚本的行尾使用';'而使用'elif'而不是'else if'(还有删除额外的''fi's)。还有,你是否有任何理由在subhells(带圆括号)运行'sudo'命令? – 2013-02-28 06:14:09

回答

7

应该有间“如果和‘[’类似if [。(检查线31号)
为了避免这种错误读取man bash