Je fais écho à du texte dans un script bash avec une variable, et je veux remplir cette variable afin qu'elle ait toujours la quantité appropriée d'espaces vers la droite pour garder le reste du texte aligné.
Voici un exemple de ce que je veux:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
La valeur numérique serait de longueur variable (probablement pas plus de 5 ou 6 chiffres).
Je sais que printf peut le faire et aligner à droite la variable en procédant comme suit:
printf "Echoing random number %5s [ OK ]" $Rand_NUM
Cependant, cela formaterait le texte comme ceci:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
Et bien sûr, l'écho avec les espaces ne fonctionne pas:
echo "Echoing random number ${Rand_NUM} [ OK ]"
Produit ceci:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
Existe-t-il un moyen d'imprimer le texte comme mon premier exemple?
Utilisation -
pour aligner à gauche un champ.
printf "Echoing random number %-5s [ OK ]" $Rand_NUM
Alternativement, si vous êtes sur un système Red Hat Linux, il existe des fonctions prédéfinies qui imprimeront les invites vertes OK et rouge ECHEC (celles que vous voyez au démarrage):
#!/bin/bash
. /etc/init.d/functions
echo -n "Frobbing widget:"
frob_widget && echo_success || echo_failure
echo
Collectez toutes vos lignes dans un fichier var ou texte, puis dirigez-le via la commande column
. Donc ceci (mon fichier d'exemple /tmp/columns.txt
)
Echoing random number 1080 [ OK ]
Echoing random number 44332356 [ OK ]
Echoing random number 34842 [ OK ]
Echoing random number 342 [ OK ]
est devenu ceci
Echoing random number 1080 [ OK ]
Echoing random number 44332356 [ OK ]
Echoing random number 34842 [ OK ]
Echoing random number 342 [ OK ]
Exemple de commande: cat /tmp/columns.txt | column -t