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

등.

답변2

다음과 같이 변수에 50을 할당할 수 있습니다.

variable=50

다음과 같이 for 루프에서 이 변수를 사용할 수 있습니다.

for i in foo bar baz; do
    printf "%${variable}s\n" "I ate 4 eggs"
done

printf 문의 패딩을 늘리려는 경우 다음을 수행할 수 있습니다.

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

관련 정보