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值賦予一些數字。任何想法?
什麼是錯誤? – FatalError 2013-02-28 05:10:43
嘗試糾正縮進的空間。它可能在執行此操作時會發現錯誤 – hek2mgl 2013-02-28 05:11:13
除了實際的錯誤之外,還有一些樣式更正:不要在shell腳本的行尾使用';'而使用'elif'而不是'else if'(還有刪除額外的''fi's)。還有,你是否有任何理由在subhells(帶圓括號)運行'sudo'命令? – 2013-02-28 06:14:09