Ich muss anzeigen
--------------------------- word ----------------------------
mit dem Wort genau in die Mitte der horizontalen Linie und stellen Sie die Länge der horizontalen Linie so ein, dass sie zur verwendeten Terminalbreite passt.
Ich habe darüber nachgedacht, einen ähnlichen Ausdruck zu verwenden als
printf '%*s\n' "$(tput cols)" '' | tr ' ' -
Antwort1
Hier ist eine Version mit, aber ich bin sicher, dass es eine kompaktere Möglichkeit gibt, dies zu tun
#!/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 " " -