http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
来源:互联网 发布:怎么开通淘宝掌柜播 编辑:程序博客网 时间:2024/05/16 08:32
转自http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...
1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`
4、for i in ${arr[@]}
5、for i in $* ; do
6、for File in /proc/sys/net/ipv4/confaccept_redirects:'
18.for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
19.echo $File
20.done
21.echo "直接指定循环内容"
22.for i in f1 f2 f3 ;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.使用`seq 100`
#!/bin/bash
clear
for i in `seq 100`
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.
for i in `seq 1 1000000`;do
echo $i
done
用seq 1 10000000做递增,之前用这种方法的时候没遇到问题,因为之前的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.
for i in {1..10000000;do
echo $i
done
其实选用哪种方法具体还是得由相应的shell环境的支持,达到预期的效果,再考虑速度方面的问题。
示例:
# !/bin/sh
i=1
function test_while(){
i=1
while [ $i ]
do
echo $i
i=`expr $i + 1`
if [ $i -ge 10 ]; then
break
fi
done
}
function test_for(){
i=1
for ((i=1; i<=100; i++)); do
echo $i
if [ $i -ge 10 ]; then
break
fi
done
}
function test_continue(){
i=1
for i in $(seq 100); 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
- http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
- http://blog.sina.com.cn/s/blog_5f8817250100g1dj.html
- http://blog.sina.com.cn/s/blog_5dfb7f4d0100j5e6.html
- http://blog.sina.com.cn/s/articlelist_1587621077_0_1.html
- http://blog.sina.com.cn/s/blog_8820018a0100w7t7.html
- http://blog.sina.com.cn/s/articlelist_1973273451_0_1.html
- http://blog.sina.com.cn/s/articlelist_1454293451_0_1.html
- http://blog.sina.com.cn/s/articlelist_1229508141_0_1.html
- http://blog.sina.com.cn/s/blog_4e6dffee0100hid1.html
- http://blog.sina.com.cn/s/blog_4ac0a0d30100cp9d.html
- http://blog.sina.com.cn/s/blog_77dd2fd20100y9vc.html
- http://blog.sina.com.cn/s/blog_61d8dfdb0100fti3.html
- http://blog.sina.com.cn/s/blog_65e943e70101est7.html
- http://blog.sina.com.cn/s/blog_8337d0c50100xn1p.html
- http://blog.sina.com.cn/s/blog_43eb83b90102dyl3.html
- http://blog.sina.com.cn/s/blog_3fe961ae01012tid.html
- http://blog.sina.com.cn/s/blog_53828e460100mv0d.html
- http://blog.sina.com.cn/s/blog_49867dc00100zj7t.html
- No matching signing identity found 之 iOS真机调试
- Portlet MVC框架
- Tasks and Back Stack
- Centos底部面板图标不见的解决办法
- Ruby的内存管理机制。
- http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
- 内核对象用于线程同步
- the project was not built due to "a resource exists with a different case'项目位置'的错误
- MySQL主从同步的问题解决
- XMLHttpRequest cannot load file:///xx.Cross origin requests are only supported for protocol schemes.
- centos6.6安装samba
- 30个有关Python的小技巧
- Java代码生成利器之rapid-generate应用五
- 工作中可能需要的某些在线插件--总结