我想打印 5,4,3,2,1。
这是我的程序,但它垂直打印数字。
numbers=5
i=1
while [ "$i" -le "$numbers" ]
do
echo “$i”
i=$(( $i + 1 ))
done
您有什么解决方案可以帮助我吗?
答案1
有很多方法可以做到这一点,这里有一些:
使用
seq
正如@Gnouc 所建议的。使用大括号扩展并将空格转换为逗号:
$ echo {5..1} | sed 's/ /,/g' 5,4,3,2,1
使用您的脚本,但更改减少计数器而不是增加计数器并更改
echo
为echo -n
(这适用于 bash 的内置echo
但不适用于所有echo
实现):i=5 while [ "$i" -gt 1 ] do echo -n "$i," let i-- done echo "$i"
改用
printf
:i=5 while [ "$i" -gt 1 ] do printf "%s," "$i" let i-- done printf "%s\n" "$i"
使用变量:
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'