免费注册 查看新帖 |

Chinaunix

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

关于SHELL FOR循环 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-09 16:42 |只看该作者 |倒序浏览
突然忘了以前曾经在论坛看到一个命令 能生成一个列表
比如生成1~100的数
然后可以让for来使用

比如
for 1 in `cmd 1 100`

想问一下那个命令是什么 我记得有几种方法

论坛徽章:
0
2 [报告]
发表于 2007-06-09 16:44 |只看该作者
seq

论坛徽章:
0
3 [报告]
发表于 2007-06-09 17:17 |只看该作者

  1. index=1
  2. while [ $index -le 100 ]
  3. do

  4. 。。。
  5. index=$(($index +1))
  6. done
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-06-09 18:01 |只看该作者

  1. #!/bin/bash
  2. while :;do
  3.     ((++index))
  4.     echo $index
  5.     ((index==100))&&break
  6. done

复制代码

论坛徽章:
0
5 [报告]
发表于 2007-06-09 18:03 |只看该作者
bash 3
for i in {1..100}
  do
   .......
  done

论坛徽章:
0
6 [报告]
发表于 2007-06-10 15:52 |只看该作者
bash 3
for i in {1..100}
  do
   .......
  done


可惜ksh不支持

论坛徽章:
0
7 [报告]
发表于 2007-06-12 15:19 |只看该作者
seq 1 100

论坛徽章:
0
8 [报告]
发表于 2007-06-12 20:34 |只看该作者
原帖由 hongyunqi 于 2007-6-10 15:52 发表


可惜ksh不支持


min=1
max=100
while [ $min -le $max ]
    do
       echo $min
        min=`expr $min + 1`
done

這個該可在任何shell執行

论坛徽章:
0
9 [报告]
发表于 2007-06-12 21:48 |只看该作者
seq 1 100 这个速度好快,比8楼的方法快多了,8楼的方法为什么就那么慢呢?

论坛徽章:
0
10 [报告]
发表于 2007-06-12 22:24 |只看该作者
seq 不是每個 Unices 都有的,因為呼叫外部程序 expr , 以迴圈方式一遍 +1 到 100
,當然慢了,如果 shell 內部命令,就快多了
如 Bash 3 可以
printf '%d\n' {1..100} , 比seq 還快...
[victor@localhost ~]$ time seq 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

real    0m0.003s
user    0m0.000s
sys     0m0.000s
[victor@localhost ~]$ time printf '%d\n' {1..20}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

real    0m0.001s
user    0m0.000s
sys     0m0.000s
[victor@localhost ~]$
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP