实例
网上常看到的 seq
实例一般如下:
#!/bin/sh
for i in $(seq 10)
do
echo $i;
done;
seq 语法
seq 是 sequence(连续) 的缩写。
其作用是:以 INCREMENT 为步长从 FIRST 到 LAST 打印数字。
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
DESCRIPTION
-f, --format=FORMAT
use printf style floating-point FORMAT
-s, --separator=STRING
use STRING to separate numbers (default: \n) #输出指定格式,默认是"\n"
-w, --equal-width
equalize width by padding with leading zeroes #输出相同字宽,默认补0
说明:其中 -s
和 -w
是不能同时使用的。
说明:默认间隔是’ "\n"
,如果想换成其它的可以带参数:-s
[root@localhost ~]#seq -s'*' 1 5 50
1*6*11*16*21*26*31*36*41*46
其他例子:
[root@localhost ~]#seq 1000 #起始和间隔默认都是 1
#从1开始,到50 间隔为5,等宽输出
[root@localhost ~]#seq -w 1 5 25
01
06
11
16
21
#从1开始,到50 间隔为5 结果是:1 6 11 16 21
[root@localhost ~]# seq -f"%2g" 1 5 25
1
6
11
16
21
#从1开始,到50 间隔为5 结果是:1 6 11 16 21
[root@localhost ~]# seq -f"%02g" 1 5 25
01
06
11
16
21
内部{begin…end}方式
除了大家熟悉的seq
方式,还可以通过内部运算符的方式来实现。
#!/bin/sh
for i in {1..50}
do
echo $i;
done;
性能比较
分别对比下面两个 script 的时间,看下那个性能更好:
#!/bin/sh
#time sh seqTest.sh
for i in $(seq 300)
do
echo $i;
done;
运行结果:
[root@localhost shell]# time sh seqTest.sh
real 0m0.012s
user 0m0.007s
sys 0m0.006s
采用内部{begin…end}方式:
#!/bin/sh
#time sh interTest.sh
for i in {1..50}
do
echo $i;
done;
运行结果:
[root@localhost shell]# time sh interTest.sh
real 0m0.002s
user 0m0.000s
sys 0m0.003s
从上面的对比可以很明显的看出,性能方面是有很大差异的。