现在的位置: 首页 > 综合 > 正文

关于SHELL FOR循环 z

2013年02月26日 ⁄ 综合 ⁄ 共 1058字 ⁄ 字号 评论关闭
比如生成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

抱歉!评论已关闭.