![중간에 단어가 있는 터미널 크기의 수평선을 인쇄하는 방법은 무엇입니까? [복사]](https://linux55.com/image/95616/%EC%A4%91%EA%B0%84%EC%97%90%20%EB%8B%A8%EC%96%B4%EA%B0%80%20%EC%9E%88%EB%8A%94%20%ED%84%B0%EB%AF%B8%EB%84%90%20%ED%81%AC%EA%B8%B0%EC%9D%98%20%EC%88%98%ED%8F%89%EC%84%A0%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
보여줘야 해
--------------------------- 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 " " -