중간에 단어가 있는 터미널 크기의 수평선을 인쇄하는 방법은 무엇입니까? [복사]

중간에 단어가 있는 터미널 크기의 수평선을 인쇄하는 방법은 무엇입니까? [복사]

보여줘야 해

--------------------------- word ----------------------------

수평선 중앙에 단어를 배치하고, 사용하는 단말기의 폭에 맞게 수평선의 길이를 설정합니다.

나는 다음과 같은 표현을 사용하는 것을 고려했습니다.

printf '%*s\n' "$(tput cols)" '' | tr ' ' -

답변1

여기에 버전이 있지만 더 간단한 방법이 있다고 확신합니다.

#!/bin/bash

WORD=$@
NUMBER_OF_SPACES_SURROUNDING_THE_WORD=1  

TERMINAL_WIDTH=$(tput cols)
WORD_SIZE=$(echo $WORD | wc -c )
NUMBER_OF_SPACES_SURROUNDING_THE_WORD=1
NUMBER_OF_SYMBOLS=$((TERMINAL_WIDTH -   $WORD_SIZE - 2*$NUMBER_OF_SPACES_SURROUNDING_THE_WORD))
LENGTH_OF_RIGHT_PART=$((NUMBER_OF_SYMBOLS/2 + $NUMBER_OF_SYMBOLS%2 ))
LENGTH_OF_LEFT_PART=$(( $TERMINAL_WIDTH - 2*$NUMBER_OF_SPACES_SURROUNDING_THE_WORD - $WORD_SIZE - $LENGTH_OF_RIGHT_PART      ))


printf '%*s' "$LENGTH_OF_RIGHT_PART" '' | tr " " -
printf '%*s' $NUMBER_OF_SPACES_SURROUNDING_THE_WORD
printf $WORD
printf '%*s' $NUMBER_OF_SPACES_SURROUNDING_THE_WORD
printf '%*s\n' "$LENGTH_OF_RIGHT_PART" '' | tr " " -

관련 정보