(→Titre + remplissage + gestion longueur impaire) |
(→Titre + remplissage + gestion longueur impaire) |
||
| (Une version intermédiaire masquée) | |||
| Ligne 28 : | Ligne 28 : | ||
<pre> | <pre> | ||
printtitre () { | printtitre () { | ||
| - | c=$1 | + | # parametre 1: caractere de remplissage |
| - | + | # parametre 2: titre a centrer et encadrer par le caractere de remplissage | |
| - | if (( $(tput cols) % 2 > 0 )) ; then printf "$c" ; fi | + | local c=$1 |
| - | printf "%*s" $(( ($(tput cols) - ${# | + | local titre=" $2 " |
| - | printf | + | #test si ligne impaire |
| - | printf "%*s" $(( ($(tput cols) - ${# | + | if (( ( ${#titre} + $(tput cols) ) % 2 > 0 )) ; then printf "$c"; fi |
| + | printf "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g" | ||
| + | printf "$titre" | ||
| + | printf "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g" | ||
printf "\n" | printf "\n" | ||
} | } | ||
</pre> | </pre> | ||
Sommaire |
la commande tput cols renvoi la largeur actuelle du terminal en nombre de caractère, soit le nombre de colonne.
printf -v spaces '%*s' $(tput cols) ''; printf '%s\n' ${spaces// /#}
autre solution:
printf "#%.0s" {$(seq $(tput cols) )}
avec toto variable contenant le titre.
printf -v spaces '%*s' $((($(tput cols)-${#toto}-2)/2)) ''
printf '%s' ${spaces// /#};printf " $toto "
printf '%s\n' ${spaces// /#}
printtitre () {
# parametre 1: caractere de remplissage
# parametre 2: titre a centrer et encadrer par le caractere de remplissage
local c=$1
local titre=" $2 "
#test si ligne impaire
if (( ( ${#titre} + $(tput cols) ) % 2 > 0 )) ; then printf "$c"; fi
printf "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"
printf "$titre"
printf "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"
printf "\n"
}