我正在从一本过时的教科书中学习 shell 脚本,我觉得如果有一个程序只返回由空格分隔的数字字符串,那么它会非常有用,例如
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
然后,如果你正在编写一个 shell 脚本,你可以
for i in `range 10 20`; do some stuff with numbers in that range;done
这样的东西存在吗,还是我需要自己写?
答案1
seq
是 coreutils 的一部分。
for i in $( seq 1 2 11 ) ; do echo $i ; done
输出:
1
3
5
7
9
11
如果仅为 提供 2 个参数seq
,则增量为 1:
$ seq 4 9
4
5
6
7
8
9
答案2
Bash 够用吗?
for i in {10..20}; do echo $i; done
你可以用括号扩展. Bash 4 还支持填充范围,例如{01..20}
。
请注意,Bash不是被认为是可移植的,而不是标准的 Unix 实用程序。尽管您可以放心地假设它已安装在大多数现代 Linux 上,但请不要在您计划在所有类型的类 Unix 机器上运行的脚本中使用它。
答案3
如果你想要一些严格可移植的东西(即不依赖于特定的 bash 扩展或 POSIX 未指定的命令)
awk 'BEGIN {for(i=10;i<=20;i++) printf "%d ",i; print}'
答案4
使用for
循环
for ((i = 10; i <= 20; ++i)); do
printf '%d\n' "$i"
done