Bashのprintfコマンド

Bashのprintfコマンド
printf "%50s\n" " I ate 4 eggs"

この例では、変数に50を割り当てたいと思います。 bash forループでこの変数をどのように使用しますか?

どんなアイデアがありますか?

ベストアンサー1

少なくとも、Cスタイル変換修飾子を使用して可変フィールド幅を渡すbashことができます。printf *

width=50
printf '%*s\n' $width "I ate 4 eggs"
                                      I ate 4 eggs

man 3 printf詳細より。

forループでこれを使用する方法は、目的の出力が何であるかによって異なります。


ご意見に基づいてご利用いただけます

for i in {45..50}; do 
  for j in {1..13}; do 
    printf '%*.*s\n' $i $j "I ate 4 eggs"
  done
done

フィールドの幅と精度を変数として提供すると、

                                   I
                                   I
                                  I a
                                 I at
                                I ate
                               I ate
                              I ate 4
                             I ate 4
                            I ate 4 e
                           I ate 4 eg
                          I ate 4 egg
                         I ate 4 eggs
                         I ate 4 eggs
                                     I
                                    I
                                   I a
                                  I at
                                 I ate
                                I ate
                               I ate 4
                              I ate 4
                             I ate 4 e
                            I ate 4 eg
                           I ate 4 egg
                          I ate 4 eggs
                          I ate 4 eggs

など。

おすすめ記事