分页: 1 / 1
until的用法问题
发表于 : 2011-08-05 9:59
由 mad_frog
大家好,
我有一个程序占用8888端口,启动这个程序得20分钟,启动过程中端口不打开,启动成功后就可以通过lsof -i:8888看到了,
我想实现脚本(用until),当发现8888开启了,就输出“port opened”
麻烦给位帮小弟看看哇
Re: until的用法问题
发表于 : 2011-08-05 10:08
由 eexpress
a=1; until($a eq 0); sleep 10; sudo lsof -i:8888; $a=$?; done; echo "open"
不知道$?初始是不是会干扰。如果干扰,可以$?赋值给$a,再判断。
占用8888端口,启动这个程序得20分钟
凭啥这样。通常,你可以expect直接搞这进程的信息处理。
Re: until的用法问题
发表于 : 2011-08-05 10:22
由 mad_frog
-bash: syntax error near unexpected token `done'
Re: until的用法问题
发表于 : 2011-08-05 10:34
由 mad_frog
a=1; until ( $a -eq 0 );do sleep 10; sudo lsof -i:3306; $a=$?; done ; echo "open"
-bash: 1: command not found
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 13521 mysql 11u IPv4 52640 TCP *:mysql (LISTEN)
-bash: 1=0: command not found
-bash: 1: command not found
Re: until的用法问题
发表于 : 2011-08-05 10:40
由 eexpress
until 没()的。我随便写的。你自己慢慢调试。
Re: until的用法问题
发表于 : 2011-08-05 11:22
由 mad_frog
a=1
until [ $a -eq 0 ]
do
sleep 10
lsof -i:3306
a=$?
done
echo "open"
exit 0
Re: until的用法问题
发表于 : 2011-08-05 11:55
由 link_01
不熟悉util,就用while啊
代码: 全选
a=1
while [ $a -ne 0 ]; do
sleep 10
lsof -i:8888
a=$?
done
echo "opened"
exit 0
大概是这样子。
Re: until的用法问题
发表于 : 2011-08-05 15:43
由 mad_frog
eexpress,
a=1
until [ $a -eq 0 ]
do
sleep 10
lsof -i:3306
a=$?
done
echo "open"
exit 0
如果我吧lsof -i:3306改成一个for循环就不行了,这是为什么呀
Re: until的用法问题
发表于 : 2011-08-05 15:47
由 eexpress
for啥。那不是一直不退出了。你还需要for里面break。
while until 没本质区别。能用就行。别for了。