gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:54:59 25 4
gpt4 key购买 nike

#!/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 的此类进程正在打印?为什么?

在该脚本如下所示并且工作得非常好之前。
#!/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 值(value)提供一些数字。任何想法?

最佳答案

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

关于bash - 否则,如果在 bash 脚本中给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com