否则,如果在bash脚本中给出错误

时间:2013-02-28 05:02:55

标签: bash shell ubuntu

#!/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中,即使没有这样的进程运行某些进程Id正在打印?为什么呢?

在此脚本看起来如下之前并且工作得很好。

#!/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值一些数字。任何想法?

1 个答案:

答案 0 :(得分:7)

“if and”[“和if [之间应该有一个空格。(检查第31行)
为避免此类错误,请阅读man bash

相关问题