仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 963|回复: 8
打印 上一主题 下一主题

[shell编程] 带来一篇shell中for轮回的总结

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:22:33 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!关于shell中的for轮回用法良多,一向想总结一下,明天网上看到上一篇关于for轮回用法的总结,感到很周全,以是就转过去研讨研讨,嘿嘿...
1、for((i=1;i<=10;i++));doecho$(expr$i*4);done
2、在shell中经常使用的是foriin$(seq10)
3、foriin`ls`
4、foriin${arr[@]}
5、foriin$*;do
6、forFilein/proc/sys/net/ipv4/confaccept_redirects:
18.forFilein/proc/sys/net/ipv4/conf/*/accept_redirects;do
19.echo$File
20.done
21.echo"间接指定轮回内容"
22.foriinf1f2f3;do
23.echo$i
24.done
25.echo
26.echo"C语法for轮回:"
27.for((i=0;i<10;i++));do
28.echo$i
29.done

---------------------------------------------------------------------------------------------------------
shell中for轮回用法
shell语法好贫苦的,一个轮回都弄了一会,找了几个分歧的***来完成输入1-100间能够被3整除的数
1.用(())
#!/bin/bash
clear
for((i=1;i<100;i++))
for
do
if((i%3==0))
then
echo$i
continue
fi
done
2.利用`seq100`
#!/bin/bash
clear
foriin`seq100`
do
if((i%3==0))
then
echo$i
continue
fi
done
3.利用while
#!/bin/bash
clear
i=1
while(($i<100))
do
if(($i%3==0))
then
echo$i
fi
i=$(($i+1))
done


--------------------------------------------------------------------------------------------------------
在shell用for轮回做数字递增的时分发明成绩,特列出shell下for轮回的几种***:
1.
foriin`seq11000000`;do
echo$i
done
用seq110000000做递增,之前用这类***的时分没碰到成绩,由于之前的i基本就没用到百万(1000000),由于项目必要我这个数字宏大于百万,发明用seq数值到1000000时转换为1e+06,基本没法作为数字举行其他运算,大概将$i无效、准确的取用,遂求其他***办理,以下
2.
for((i=1;i<10000000;i++));do
echo$i
done
3.
i=1
while(($i<10000000));do
echo$i
i=`expr$i+1`
done
由于本***挪用expr故运转速率会比第1,第2种慢很多不外可稍作改善,将i=`expr$i+1`改成i=$(($i+1))便可稍作速率的提拔,不外详细得看响应shell情况是不是撑持
4.
foriin{1..10000000;do
echo$i
done
实在选用哪一种***详细仍是得由响应的shell情况的撑持,到达预期的效果,再思索速率方面的成绩。
示例:
#!/bin/sh
i=1
functiontest_while(){
i=1
while[$i]
do
echo$i
i=`expr$i+1`
if[$i-ge10];then
break
fi
done
}
functiontest_for(){
i=1
for((i=1;i<=100;i++));do
echo$i
if[$i-ge10];then
break
fi
done
}
functiontest_continue(){
i=1
foriin$(seq100);do
if((i==0));then
echo$i
continue
fi
done
}
echo"test_while..."
test_while
echo"test_for..."
test_for
echo"test_continue..."
test_continue
运转了局:
test_while...
1
2
3
4
5
6
7
8
9
test_for...
1
2
3
4
5
6
7
8
9
10
test_continue...
10
20
30
40
50
60
70
80
90
100如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-13 13:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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