分页: 1 / 1

bash 错误控制问题

发表于 : 2012-07-07 19:12
pswzyu
有个关于bash脚本的问题, http://code.bulix.org/tjhgeh-81814, 目的是实现同步ubuntu的源, 但是因为我这个机器下载只有500kb, 所以有时候一天同步不完, 所以我加了一个锁, 但是现在有个问题, 就是如果第一个rsync超时退出后, 整个脚本就会随之退出, 导致后边删除锁文件的语句不能执行, 我想请问一下如何在一个语句出错后脚本能够继续执行

Re: bash 错误控制问题

发表于 : 2012-07-07 20:11
YeLee
都有$?的吧,加个判断就差不多了。 :em04

Re: bash 错误控制问题

发表于 : 2012-07-07 21:00
pswzyu
你的意思是 是$?造成的出错退出?

Re: bash 错误控制问题

发表于 : 2012-07-07 21:01
YeLee
善于利用程序的返回值嘛。 :em04

Re: bash 错误控制问题

发表于 : 2012-07-10 8:54
pswzyu
这貌似不是返回值的问题, 脚本执行到出错的程序之后就不执行后边的语句了

Re: bash 错误控制问题

发表于 : 2012-07-10 8:54
pswzyu
我想要脚本继续执行

Re: bash 错误控制问题

发表于 : 2012-07-10 9:00
cuihao
hmm,会自动退出么?
如果自己不加exit的话,应该还是会进行下去的吧。

Re: bash 错误控制问题

发表于 : 2012-07-10 9:02
cuihao
我胡乱修改一下你的脚本,让rsync运行不了,最后还是进行到rm这一步了:

代码: 全选

cuihao@cuihao-arch /tmp $ bash aa.sh
aa.sh:行7: /var/programs404/repo_sync/ubuntu.log: 没有那个文件或目录
rsync: getaddrinfo: mirrors.ustc.edu 873: Name or service not known
rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.9]
rsync: getaddrinfo: mirrors.ustc.edu 873: Name or service not known
rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.9]
rm: 无法删除"/var/programs404/repo_sync/ubuntu.lock": 没有那个文件或目录