免费注册 查看新帖 |

Chinaunix

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

[其他] 请教一下,shell中if如何控制循环次数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-22 13:41 |只看该作者 |倒序浏览
新手,现在想搞一个简单功能,主要目的是想要判断某个动作是否执行成功,成功则进入下一环节B,不成功,则重复执行三次(最多执行三次,只要有一次成功,就进入流程B)
我是这么写的
if [[ $? = 0 ]]
then
echo 'True'
else
for ((i=0;i<4;i++))
do
echo 'True'
done
fi
但是这样不对哎。。。。
谁能教我一下这种判断循环次数的原理吗

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
2 [报告]
发表于 2016-10-22 14:54 |只看该作者
本帖最后由 bikkuri 于 2016-10-23 12:38 编辑
  1. count=3
复制代码

论坛徽章:
0
3 [报告]
发表于 2016-10-22 17:51 |只看该作者

很奇怪啊。。
为什么执行之后,A和B动作都执行了呢。。。
不是应该只执行其中之一麽

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
4 [报告]
发表于 2016-10-23 08:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
5 [报告]
发表于 2016-10-23 11:15 |只看该作者
#!/bin/bash
#
somecommand
if [ $? -eq 0 ];then
    echo true
else
    for((i=1;i<=3;i++))
        do
            echo "false"
        done
fi

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
6 [报告]
发表于 2016-10-23 12:39 |只看该作者
回复 3# work4seo

count=3
succeeded=0
while [ $count -gt 0 ]; do
A
if [ $? -eq 0 ]; then succeeded=1; count=0; else let count-=1; fi
done
if [ $succeeded -eq 1]; then B; fi

论坛徽章:
1
黑曼巴
日期:2016-08-17 14:00:26
7 [报告]
发表于 2016-10-26 17:49 |只看该作者
加个变量记录循环次数撒
一般来说循环语句都不会自带次数限制的功能吧

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2016-10-26 14:32:57
8 [报告]
发表于 2016-10-28 10:14 |只看该作者
你shell运行之后,在系统就会有一个子shell,子shell运行完毕才会修改$?的吧
所以你的判断条件运行成功应该写一个if来判断是不是成功就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP