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

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

shell脚本中,seq命令常用于生成数字序列。它的基本用法是通过指定起始数、结束数和步长来生成一个数字序列。例如,使用seq命令生成从1到5的数字序列可以这样写:seq 1 5。这将输出数字1、2、3、4、5,每个数字占一行。\[1\] 另外,seq命令还支持一些常见的参数。其中,-f参数可以指定输出格式,使用printf样式的浮点格式。例如,使用seq -f 'dir%03g' 1 5可以生成名为dir001、dir002、dir003、dir004、dir005的目录。\[2\] 还有一个常用的参数是-s,它可以指定数字之间的分隔符。默认情况下,分隔符是换行符。例如,使用seq -s ',' 1 5可以生成数字序列1,2,3,4,5。\[3\] 总结起来,shell脚本中的seq命令可以用于生成数字序列,并可以通过参数来控制输出格式和分隔符。 #### 引用[.reference_title] - *1* [Shell常用命令-- seq 详解](https://blog.csdn.net/qq_35887546/article/details/104312009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [shell基础--- seq命令详解](https://blog.csdn.net/yujia_666/article/details/108699339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值