我从一本过时的教科书中学习 shell 脚本,在我看来,拥有一个只返回一串由空格分隔的数字的程序真的很有用,比如
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)
然后,如果你在做一个 shell 脚本,你可以有
for i in `range 10 20`; do some stuff with numbers in that range;done
Run Code Online (Sandbox Code Playgroud)
这种东西存在吗,还是我需要自己写?
cho*_*oba 80
seq
是 coreutils 的一部分。
for i in $( seq 1 2 11 ) ; do echo $i ; done
Run Code Online (Sandbox Code Playgroud)
输出:
1
3
5
7
9
11
Run Code Online (Sandbox Code Playgroud)
如果只向 提供 2 个参数seq
,则增量为 1:
$ seq 4 9
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
slh*_*hck 34
Bash 就够了吗?
for i in {10..20}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
你可以用大括号扩展做很多事情。Bash 4 还支持填充范围,例如{01..20}
.
请注意,Bash不被认为是可移植的,也不是标准的 Unix 实用程序。尽管您可以安全地假设它已安装在大多数现代 Linux 上,但不要在您计划在各种类 Unix 机器上运行的脚本中使用它。
如果你想要一些严格可移植的东西(即不依赖于 POSIX 未指定的特定 bash 扩展或命令)
awk 'BEGIN {for(i=10;i<=20;i++) printf "%d ",i; print}'
Run Code Online (Sandbox Code Playgroud)
在 10.7 之前seq
,Mac OS X 上没有,但是jot
由于 BSD 传统。
jot -- print sequential or random data
...
HISTORY
The jot utility first appeared in 4.2BSD
Run Code Online (Sandbox Code Playgroud)
例子:
$ jot - 1 3
1
2
3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4260 次 |
最近记录: |