LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 875|回复: 4

这个命令行是如何被解释的?

[复制链接]
发表于 2006-9-13 22:34:47 | 显示全部楼层 |阅读模式
[PHP]
#!/bin/sh
MYFILE=err.file
cmd=udm2 #udm2 是登入tiptop的指令,登入失败则有失败信息输出,否则无错误信息输出
while true                                                                     
do                                                                              
         $cmd  2>$MYFILE                                                     
        if [ ! -s $MYFILE ]                                                     
        then                                                                    
            break                                                               
        fi                                                                     
    sleep 5                                                                     
done   
[/PHP]

程序理想运行结果为:
一旦udm2 运行成功则当用户退出udm2后程序结束

实际运行结果为
udm2 运行成功,用户退出udm2,此时就奇怪了,程序马上又运行udm2, 当用户再次退出udm2后,程序才结束!

我的运行环境为bash和ksh。
请问各位,这是什么原因?谢谢!

kiron编辑原因:加上CODE标签,请楼主注意培养别人对你的帖子回复的良好情绪,谢谢合作
发表于 2006-9-14 00:00:17 | 显示全部楼层
整理一下逻辑,我认为你的这句应该是        
[PHP]
if [ -s $MYFILE ]                                                     
        then                                                                    
            break                                                               
        fi
[/PHP]

可以写得更简洁一点:
[PHP]
#!/bin/sh
MYFILE=err.file
cmd=udm2
while true                                                                     
do                                                                              
         $cmd  2>$MYFILE  || break
         sleep 5                                                                     
done
[/PHP]
回复 支持 反对

使用道具 举报

发表于 2006-9-14 00:29:56 | 显示全部楼层
try this

  1. while :; do
  2. $cmd && exit 0
  3. sleep 5
  4. done
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-14 19:56:29 | 显示全部楼层
谢谢你们的建议。
我曾经这样测试过

udm2|echo $?

果输出 0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-15 20:24:49 | 显示全部楼层

TKS

经测试,以上修改皆可行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表