如何使用 seq(1) 以相反顺序显示数字?

如何使用 seq(1) 以相反顺序显示数字?

我以各种顺序迭代数字。我可以按升序显示它们,甚至可以执行以下步骤:

$ seq --separator="," 1 10
1,2,3,4,5,6,7,8,9,10
$ seq --separator="," 1 2 10
1,3,5,7,9

我还能够以相反的顺序显示它们,既不连续也不逐步。

$ seq --separator="," 10 1   
$ seq --separator="," 10 2 1

上述命令没有输出。

我的外壳详细信息:

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

让我知道如何按降序显示数字?

答案1

使用负增量

seq -s, 10 -2 1
10,8,6,4,2

答案2

一般来说,您不想使用seq,它不可移植(即使在标准 Linux 环境中也是如此)。如果您使用的是 ksh、zsh 或 bash4+,则可以使用大括号扩展:

echo {10..1..2} | tr " " ,
10,8,6,4,2

答案3

纯 bash、ksh 或 zsh 中的另一种方式:

for ((i=10;i>0;i-=2)) ; do echo -n "$i," ; done

纯 POSIX sh 方式:

i=10
while [ "$i" -gt 2 ]; do printf "$i,"; i=$((i-2)); done
echo "$i"

答案4

尝试使用:

   seq [OPTION]... FIRST INCREMENT LAST

例子:

$ 序列 10 -1 1

相关内容