동적 길이의 문자열 구축-가장 적은 소비 방법? 열 크기의 50 %에 해당

-터미널 창 열 크기의 50 %에 해당 하는 일련의 문자를 쓰고 싶습니다 .

이미 열 크기가 있습니다. 터미널 열 크기가 30이라고 가정 해 보겠습니다. 원하는 최종 결과는 다음을 포함하는 String 변수입니다.

echo $column_width
---------------
# That is 15 x "-"

이 변수를 작성하려면 어떻게해야합니까? 0 <$ column_width를 반복하고 각 반복마다 “-“를 연결해야합니까, 아니면 더 똑똑한 방법이 있습니까? 궁금한 점이 있다면 이것은 bash 프롬프트의 일부 일뿐입니다.



답변

펄은 이것에 능하다 :

separator=$( perl -e 'print "-" x (qx(tput cols) / 2)' )

껍질로 :

separator=$( printf "%*s" $(( $(tput cols) / 2 )) " " | sed 's/ /-/g' )

여기서 tput cols현재 터미널 너비를 잡는 데 사용됩니다.