![数字を水平に印刷するには? [コピー]](https://linux33.com/image/40171/%E6%95%B0%E5%AD%97%E3%82%92%E6%B0%B4%E5%B9%B3%E3%81%AB%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
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'