until的用法问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

until的用法问题

#1

帖子 mad_frog » 2011-08-05 9:59

大家好,
我有一个程序占用8888端口,启动这个程序得20分钟,启动过程中端口不打开,启动成功后就可以通过lsof -i:8888看到了,
我想实现脚本(用until),当发现8888开启了,就输出“port opened”
麻烦给位帮小弟看看哇
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: until的用法问题

#2

帖子 eexpress » 2011-08-05 10:08

a=1; until($a eq 0); sleep 10; sudo lsof -i:8888; $a=$?; done; echo "open"
不知道$?初始是不是会干扰。如果干扰,可以$?赋值给$a,再判断。
占用8888端口,启动这个程序得20分钟
凭啥这样。通常,你可以expect直接搞这进程的信息处理。
● 鸣学
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: until的用法问题

#3

帖子 mad_frog » 2011-08-05 10:22

-bash: syntax error near unexpected token `done'
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: until的用法问题

#4

帖子 mad_frog » 2011-08-05 10:34

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
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: until的用法问题

#5

帖子 eexpress » 2011-08-05 10:40

until 没()的。我随便写的。你自己慢慢调试。
● 鸣学
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: until的用法问题

#6

帖子 mad_frog » 2011-08-05 11:22

a=1
until [ $a -eq 0 ]
do
sleep 10
lsof -i:3306
a=$?
done
echo "open"
exit 0
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: until的用法问题

#7

帖子 link_01 » 2011-08-05 11:55

不熟悉util,就用while啊

代码: 全选

a=1
while [ $a -ne 0 ]; do
  sleep 10
  lsof -i:8888
  a=$?
done
echo "opened"
exit 0
大概是这样子。
笔记
-------------------------------------
http://blog.163.com/wqt_1101
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: until的用法问题

#8

帖子 mad_frog » 2011-08-05 15:43

eexpress,
a=1
until [ $a -eq 0 ]
do
sleep 10
lsof -i:3306
a=$?
done
echo "open"
exit 0

如果我吧lsof -i:3306改成一个for循环就不行了,这是为什么呀
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: until的用法问题

#9

帖子 eexpress » 2011-08-05 15:47

for啥。那不是一直不退出了。你还需要for里面break。
while until 没本质区别。能用就行。别for了。
● 鸣学
回复