比如生成1~100的数
然后可以让for来使用
比如
for 1 in `cmd 1 100`
想问一下那个命令是什么 我记得有几种方法
seq
bash 3
for i in {1..100}
do
.......
done
seq 1 100
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
然后可以让for来使用
比如
for 1 in `cmd 1 100`
想问一下那个命令是什么 我记得有几种方法
seq
CODE:
[Copy to clipboard]
index=1
while [ $index -le 100 ]
do
。。。
index=$(($index +1))
done
while [ $index -le 100 ]
do
。。。
index=$(($index +1))
done
CODE:
[Copy to clipboard]
#!/bin/bash
while :;do
((++index))
echo $index
((index==100))&&break
done
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不支持
for i in {1..100}
do
.......
done
seq 1 100
QUOTE:
原帖由
hongyunqi 于 2007-6-10 15:52 发表
可惜ksh不支持
min=1
可惜ksh不支持
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
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>