是否有一个标准的 unix 程序可以返回一系列数字

是否有一个标准的 unix 程序可以返回一系列数字

我正在从一本过时的教科书中学习 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

相关内容