用 echo 逐行打印数字序列

时间:2021-02-12 12:23:18

标签: bash shell

我想在新行上打印从 1 到 99 的每个奇数,为什么这在 Bash 中不起作用?

IFS=$'\n'; echo {1..99..2}

它在同一行打印所有数字,IFS 不应该改变这种行为吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

echo {1..99..2} | tr ' ' '\n'

您可以使用 seq 获得相同的结果:

seq 1 2 99

或者,正如 Aydin 先生所建议的,可以使用 printf 使用内置的单个 shell 来完成:

printf '%s\n' {1..99..2}

IFS 控制输入解析,以及 bash 如何检测输入中的新行。这里不重要。