免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2223 | 回复: 2
打印 上一主题 下一主题

[文本处理] until 退出条件能否是条件1或者条件2呢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-08 11:52 |只看该作者 |倒序浏览
until语句退出能否是条件1或者条件2呢?

我这边scp一个文件,如果第一次没成功,那么我会sleep 30s再次scp,直到scp成功或者scp 5次之后仍然不成功?
如果不能用until,可以用什么语句来实现,目前我用的是until,只是条件是scp成功,如果不成功将一直ping下去,我不想这样。
  1. scp  /home/$HOSTNAME/ root@node1:/home/
  2. scpstatus=`echo $?`
  3. if [ "$scpstatus" == "0" ];then
  4.   echo "file copy sucessfully"
  5. else
  6.     until [ $scpstatus -eq 0 ]
  7.   do
  8.     sleep 30s
  9.     scp -r /home/$HOSTMAE/ root@$node1_ip:/home
  10.     scpstatus=`echo $?`
  11.   done
  12. fi
复制代码

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
2 [报告]
发表于 2014-07-08 12:01 |只看该作者
本帖最后由 itfly3 于 2014-07-08 12:05 编辑

  until [ $scpstatus -eq 0 ]
  do
    sleep 30s
    scp -r /home/$HOSTMAE/ root@$node1_ip:/home
    scpstatus=`echo $?`
    if((i++=5));then
         exit 1
    fi
  done
语法我没细试了,貌似这里不能用exit,你用break也行,反正退出until就行

论坛徽章:
0
3 [报告]
发表于 2014-07-08 14:47 |只看该作者
回复 2# itfly3

我更改成这样了,可以执行,也能达到效果。
  1. j=1
  2. until [ $scpstatus -eq 0 ]
  3. do
  4.     sleep 30s
  5.     scp xxx
  6.     scpstatus=`echo $?`
  7.     j=`expr $j + 1`
  8.     if [ $j -eq 6 ];then
  9.      break
  10.     fi
  11. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP