LinuxSir.cn,穿越时空的Linuxsir!

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

求一简单shell 大家帮帮帮。

[复制链接]
发表于 2006-5-16 11:16:42 | 显示全部楼层 |阅读模式
我有几个程式。已经写好要批次执行。
AA
BB
CC
DD

我想写个批次执行的脚本。要判断每个程式是否执行完成。如果为完成重复执行
用$?=0 来判断上面的是否完成可以吗。应该怎么写。大家帮帮帮。
发表于 2006-5-16 13:58:29 | 显示全部楼层
AA && BB && CC && DD

echo $?
任何一个出错,都会引起错误。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-16 18:02:46 | 显示全部楼层
谢谢!!那如果我哪个有问题再回去执行呢?应该怎么写。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 18:10:47 | 显示全部楼层
据我所知,没这个功能。。。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 22:55:40 | 显示全部楼层
for a in AA BB CC DD
do
until $a
do echo $a failed and will restart.
done
if [ $? != 0 ]
then
break
fi
done
注意运行成功默认返回0
运行到成功为止,否则一直运行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 15:31:22 | 显示全部楼层
非常感谢lastart
不过还要请教一下。
这里if [ $? != 0 ]  
$?不等于0 然后重复执行吧 until $i 直到$i 等于0 才break
但从程式上看。好象是如果 $i 不等于0 就break
回复 支持 反对

使用道具 举报

发表于 2006-5-17 20:54:17 | 显示全部楼层
我加那个if没什么用的。是为了防止执行个没完没了的时候,可以按^C退出。
具体if起不起作用还不一定呢。
until已经是循环,执行到$?=0退出。这时if是肯定不会执行的。
回复 支持 反对

使用道具 举报

发表于 2006-5-18 05:52:48 | 显示全部楼层
错误一次,再运行一次,应该还是错误的。。。要考虑死循环问题。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-18 18:25:21 | 显示全部楼层
那是怎么判断出错重复执行的呢?
do
until $a 它执行结果如果不正确就重复执行吗?不用加判断吗
回复 支持 反对

使用道具 举报

发表于 2006-5-18 19:49:32 | 显示全部楼层
你整个就没看对. 是

until $a
do echo $a failed and will restart.
sleep 5 //新加的.死循环时,可以在这时按^C退出.
done

until本来就是判断$a执行的返回值.
自己man bash一下吧.

那个if一点用都没有. 呵呵

不过正如终极幻想说的那样.可能会一直不成功而进入死循环.
回复 支持 反对

使用道具 举报

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

本版积分规则

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