English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans le chapitre précédent, nous avons appris la commande echo de Shell, dans ce chapitre, nous allons étudier une autre commande d'output de Shell, à savoir printf.
La commande printf imite la fonction printf() de la bibliothèque de programmes C.
printf est défini par la norme POSIX, donc les scripts utilisant printf sont plus portables que ceux utilisant echo.
L'utilisation de printf nécessite des arguments sous forme de texte ou de séparateurs d'espace, et l'extérieur peut utiliser des chaînes de caractères formatées, ainsi que définir la largeur de la chaîne et le mode d'alignement à droite ou à gauche. Par défaut, printf ne rajoute pas automatiquement un retour à la ligne, nous pouvons l'ajouter manuellement avec \n.
Syntaxe de la commande printf :
printf format-string [arguments...]
Explication des paramètres :
format-string: Est une chaîne de contrôle de format
arguments: Sont des arguments de liste.
$ echo "Hello, Shell" Hello, Shell $ printf "Hello, Shell\n" Hello, Shell $
Ensuite, je vais utiliser un script pour illustrer la fonction puissante de printf :
#!/bin/bash # author:基础教程网 # url:fr.oldtoolbag.com printf "%"-10s %-8s %-4s\n" Nom Sexe Poidskg printf "%"-10s %-8s %-4.2f\n" Guo Jing Homme 66.1234 printf "%"-10s %-8s %-4.2f\n" Yang Guo Homme 48.6543 printf "%"-10s %-8s %-4.2f\n" Guo Fu Femme 47.9876
Exécuter le script, afficher les résultats comme suit :
Nom Sexe Poidskg Guo Jing Homme 66.12 Yang Guo Homme 48.65 Guo Fu Femme 47.99
%s %c %d %f sont des substituts de format,%s Afficher une chaîne de caractères,%d Sortie entière,%c Afficher un caractère,%f Afficher un nombre réel, en forme décimale.
%-10s pour une largeur de 10 de caractères (- représente l'alignement à gauche, sans quoi il représente l'alignement à droite), tout caractère sera affiché dans 10 de caractères largeur du caractère, si elle n'est pas suffisante, elle sera remplie automatiquement avec des espaces, et si elle dépasse, le contenu sera affiché intégralement.
%-4.2f pour formaté en décimal, où .2 de conserver2de décimales.
#!/bin/bash # author:基础教程网 # url:fr.oldtoolbag.com # format-La chaîne est entre guillemets doubles printf "%d %s\n" 1 "abc" # Les guillemets simples et doubles ont le même effet printf '%d %s\n' 1 "abc" # Il est possible de sortir sans guillemets printf %s abcdef # Le format ne spécifie qu'un paramètre, mais les paramètres en excès seront également affichés selon ce format, format-La chaîne est réutilisée printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # Si il n'y a pas d'arguments, alors %s est remplacé par NULL, %d par 0 printf "%s and %d \n"
Exécuter le script, afficher les résultats comme suit :
1 abc 1 abc abcdefabcdefabc def a b c d e f g h i j et 0
Série | Description |
---|---|
\a | Caractère d'avertissement, généralement le caractère BEL de l'ASCII |
\b | Retour arrière |
\c | Supprimer (ne pas afficher) tout caractère de retour chariot final dans le résultat de la sortie (seulement valide dans les chaînes de paramètres contrôlées par l'indicateur de format %b), et tous les caractères restants dans le paramètre, les paramètres suivants et tous les caractères restants dans la chaîne de format sont ignorés |
\f | Page de formfeed (Formfeed) |
\n | Retour chariot (Line feed) |
\r | Retour chariot (Carriage return) |
\t | Tabulation horizontale |
\v | Tabulation verticale |
\\ | un caractère d'antislash littéral |
\ddd | représenter1à3caractère de valeur octale de bits. Seulement valide dans la chaîne de format |
\0ddd | représenter1à3caractère de valeur octale |
$ printf "a stringe, pas de traitement:<%s>\n" "A\nB" a stringe, pas de traitement:<A\nB> $ printf "a stringe, pas de traitement:<%b>\n" "A\nB" a stringe, pas de traitement:<A B> $ printf "fr.oldtoolbag.com \a" fr.oldtoolbag.com $ #Ne pas sauter de ligne