您好,匿名用户
随意问技术百科期待您的加入

bash脚本求修改

0 投票

程序运行格式为 mono /opt/Release/XXX.exe 配置文件目录。程序开启后会打开一个tcp端口。
写了一个超级笨的脚本,是实现多个程序实例一键开启的。脚本通过目录是否存在和端口连接是否为零来判断某个程序实例激活状态。

#!/bin/sh
mono=`which mono`
Release_DIR="/opt/Release"
exe="${Release_DIR}/XXX.exe"
###########
server2_DIR="/opt/server2"
server3_DIR="/opt/server3"
server4_DIR="/opt/server4"
server5_DIR="/opt/server5"
server6_DIR="/opt/server6"
server7_DIR="/opt/server7"
server8_DIR="/opt/server8"
server9_DIR="/opt/server9"
server10_DIR="/opt/server10"
s2=`netstat -ant|grep 0:5001|wc -l`
s3=`netstat -ant|grep 0:5002|wc -l`
s4=`netstat -ant|grep 0:5003|wc -l`
s5=`netstat -ant|grep 0:5004|wc -l`
s6=`netstat -ant|grep 0:5005|wc -l`
s7=`netstat -ant|grep 0:5006|wc -l`
s8=`netstat -ant|grep 0:5007|wc -l`
s9=`netstat -ant|grep 0:5008|wc -l`
s10=`netstat -ant|grep 0:5009|wc -l`
if [ -d ${server2_DIR} ]; then
        if [ $s2 -eq 0 ]; then screen -dmS S2 $mono $exe ${server2_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server3_DIR} ]; then
        if [ $s3 -eq 0 ]; then screen -dmS S3 $mono $exe ${server3_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server4_DIR} ]; then
        if [ $s4 -eq 0 ]; then screen -dmS S4 $mono $exe ${server4_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server5_DIR} ]; then
        if [ $s5 -eq 0 ]; then screen -dmS S5 $mono $exe ${server5_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server6_DIR} ]; then
        if [ $s6 -eq 0 ]; then screen -dmS S6 $mono $exe ${server6_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server7_DIR} ]; then
        if [ $s7 -eq 0 ]; then screen -dmS S7 $mono $exe ${server7_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server8_DIR} ]; then
        if [ $s8 -eq 0 ]; then screen -dmS S8 $mono $exe ${server8_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server9_DIR} ]; then
        if [ $s9 -eq 0 ]; then screen -dmS S9 $mono $exe ${server9_DIR}/ > /dev/null 2>&1;fi
fi
if [ -d ${server10_DIR} ]; then
        if [ $s10 -eq 0 ]; then screen -dmS S10 $mono $exe ${server10_DIR}/ > /dev/null 2>&1;fi
fi

现在自己把###########下面的代码写到一个循环里面,但修改后无法执行。故在此求高人指点。

for a in `seq 2 10`
do	let s$a=`netstat -ant|grep 0:500$[$a-1]|wc -l`
	if [ -d /opt/server$a ]; then
		if [ s$a -eq 0 ]; then
			screen -dmS S$a $mono $exe /opt/server$a/ > /dev/null 2>&1;fi
	fi
done
用户头像 提问 2014年 3月30日 @ Talon 上等兵 (294 威望)
分享到:

1个回答

0 投票
 
最佳答案
#!/bin/sh
for a in `seq 2 10`
do
    b=`netstat -ant|grep 0:500$((a-1))|wc -l`

    if [ -d /opt/server$a ]; then
        if [ $b -eq 0 ]; then
            screen -dmS S$a $mono $exe /opt/server$a/ > /dev/null 2>&1;
        fi
    fi
done
用户头像 回复 2014年 3月30日 @ Redis 上等兵 (114 威望)
选中 2013年 9月7日 @Talon
提一个问题:

相关问题

0 投票
1 回复 52 阅读
用户头像 提问 2012年 12月1日 @ Talon 上等兵 (294 威望)
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Darius 上等兵 (331 威望)
0 投票
1 回复 63 阅读
用户头像 提问 2013年 11月6日 @ 切糕 上等兵 (151 威望)
0 投票
1 回复 138 阅读
用户头像 提问 2012年 12月1日 @ Demeter 上等兵 (208 威望)
0 投票
1 回复 33 阅读
用户头像 提问 2013年 11月19日 @ 爹妈罩我去战斗 上等兵 (131 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...