En KSH, la commande print apporte des fonctionnalités supplémentaires à la commande echo.
Exemple :
Utilisation simple
$ print coucou
coucou
$
Supprimer le saut de ligne
$ print -n coucou
coucou$
Afficher des arguments commançant par le caractère "-"
$ print - "-i : Option invalide"
-i : Option invalide
$
Ecrire sur un descripteur particulier
$ print -u2 "Message d'erreur"
Message d'erreur
$
Comparaison avec la commande echo
$ echo "Message d'erreur" 1>&2
Message d'erreur
$
En BASH, cette commande est identique à celle du langage C.
Elle permet de formater les affichages.
Syntaxe :
printf chaine expr1 expr2 ..... exprn
chaine représente la chaîne qui sera affichée à l'écran.
Elle peut contenir des formats qui seront substitués par la valeur des expressions citées à sa suite.
Il doit y avoir autant de formats que d'expressions.
Exemple de formats utilisés.
%20s | Affichage d'une chaine (string) sur 20 positions avec cadrage à droite |
%-20s | Affichage d'une chaine (string) sur 20 positions avec cadrage à gauche |
%3d | Affichage d'un entier (décimal) sur 3 positions avec cadrage à droite |
%03d | Affichage d'un entier (décimal) sur 3 positions avec cadrage à droite et complété avec des 0 à gauche |
%-3d | Affichage d'un entier (décimal) sur 3 positions avec cadrage à gauche |
%+3d | Affichage d'un entier (décimal) sur 3 positions avec cadrage à droite et affichage systématique du signe (un nombre négatif est toujours affiché avec son signe) |
%10.2f | Affichage d'un nombre flottant sur 10 positions dont 2 décimales |
%+010.2f | Affichage d'un nombre flottant sur 10 positions dont 2 décimales, complété par des 0 à gauche, avec cadrage à droite et affichage systématique du signe |
Exemple :
$ article="Livres"
$ quantite=3
$ prix=3,5
$ printf "%-20s***%03d***%+10.2f\n" $article $quantite $prix
Livres ***003*** +3,50
$
En utilisant un tableau
$ liste=(livre 10 3,5 cd 5 10,65 dvd 7 19,70 bd 80 5,25)
$ printf "%-20s***%03d***%+10.2f\n" ${liste[*]}
livre ***010*** +3,50
cd ***005*** +10,65
dvd ***007*** +19,70
bd ***080*** +5,25
$