Chinaunix首页 | 论坛 | 博客
  • 博客访问: 421058
  • 博文数量: 120
  • 博客积分: 3125
  • 博客等级: 中校
  • 技术积分: 1100
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-29 10:59
文章分类

全部博文(120)

文章存档

2012年(28)

2011年(22)

2010年(34)

2009年(1)

2008年(35)

我的朋友

分类: LINUX

2008-11-20 15:38:27

比如生成1~100的数
然后可以让for来使用

比如
for 1 in `cmd 1 100`

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

seq



CODE:
[Copy to clipboard]
index=1
while [ $index -le 100 ]
do

。。。
index=$(($index +1))
done




CODE:
[Copy to clipboard]
#!/bin/bash
while :;do
    ((++index))
    echo $index
    ((index==100))&&break
done



bash 3
for i in {1..100}
  do
   .......
  done



QUOTE:
bash 3
for i in {1..100}
  do
   .......
  done
可惜ksh不支持

seq 1 100



QUOTE:
原帖由 hongyunqi 于 2007-6-10 15:52 发表


可惜ksh不支持
min=1
max=100
while [ $min -le $max ]
    do
       echo $min
        min=`expr $min + 1`
done

這個該可在任何shell執行

seq 1 100 这个速度好快,比8楼的方法快多了,8楼的方法为什么就那么慢呢?

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 ~]$

谢谢 twf_cc 释疑,已经明白了。

不必客氣 , 大家交流一下 :), 我剛用 ruby 再試一下,更慢..., 還是用bash 快,哈
[victor@localhost ~]$ cat count.rb
for i in 1..20
   p i
end
[victor@localhost ~]$ time ruby count.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

real    0m0.017s
user    0m0.008s
sys     0m0.000s

阅读(1177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~