shell script 使用序列(seq、内部{})方式

实例

网上常看到的 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

从上面的对比可以很明显的看出,性能方面是有很大差异的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值