如何水平打印数字?

如何水平打印数字?

我想打印 5,4,3,2,1。

这是我的程序,但它垂直打印数字。

numbers=5
i=1
while [ "$i" -le "$numbers" ]
do
echo “$i”
i=$(( $i + 1 ))
done

您有什么解决方案可以帮助我吗?

答案1

有很多方法可以做到这一点,这里有一些:

  1. 使用seq正如@Gnouc 所建议的。

  2. 使用大括号扩展并将空格转换为逗号:

    $ echo {5..1} | sed 's/ /,/g' 
    5,4,3,2,1
    
  3. 使用您的脚本,但更改减少计数器而不是增加计数器并更改echoecho -n(这适用于 bash 的内置echo但不适用于所有echo实现):

    i=5
    while [ "$i" -gt 1 ]
    do
        echo -n "$i,"
        let i--
    done
    echo "$i"    
    
  4. 改用printf

    i=5
    while [ "$i" -gt 1 ]
    do
        printf "%s," "$i"
        let i--
    done
    printf "%s\n" "$i"    
    
  5. 使用变量:

    i=5
    v=5
    while [ "$i" -gt 1 ]
    do
        let i--;
        v=$v,$i
    done
    echo $v
    

答案2

使用seq,您可以执行以下操作:

$ seq -s, 5 -1 1
5,4,3,2,1

并且perl解决方案可以是可移植的:

$ perl -e 'print join ",", reverse 1..5'

相关内容