Aperçu
`printf` contrôle précisément la sortie en utilisant une chaîne de format et des arguments. Elle est utilisée dans les scripts pour diverses tâches telles que la génération de rapports et le formatage des messages de journal.
Caractéristiques principales
- Prise en charge de divers spécificateurs de format (%s, %d, %f, etc.)
- Prise en charge des séquences d'échappement (\n, \t, \x, etc.)
- Sortie par type de données : entiers, flottants, chaînes, etc.
- Contrôle de la largeur, de la précision et de l'alignement de la sortie
Options principales (Spécificateurs de format et séquences d'échappement)
La commande `printf` contrôle son comportement non pas par des options commençant par `-`, mais par des 'spécificateurs de format' et des 'séquences d'échappement' inclus dans la chaîne de format. Voici les plus couramment utilisés.
Spécificateurs de format
Séquences d'échappement
Commande générée :
Essayez de combiner les commandes.
Description:
`printf` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Exemples d'utilisation de `printf` avec divers spécificateurs de format et séquences d'échappement.
Affichage de chaîne simple
printf "Hello, World!\n"
Affiche une chaîne simple et passe à la ligne.
Affichage mixte d'entiers et de chaînes
printf "Nom : %s, Âge : %d ans\n" "Jean Dupont" 30
Affiche un entier et une chaîne formatés ensemble.
Spécification de la précision des nombres à virgule flottante
printf "Pi : %.2f\n" 3.141592
Affiche un nombre à virgule flottante avec deux décimales.
Largeur et alignement de la sortie
printf "%-10s %5d\n" "Produit" 123
Aligne une chaîne à gauche sur 10 caractères et un entier à droite sur 5 caractères.
Affichage hexadécimal et octal
printf "Décimal : %d, Hexadécimal : %x, Octal : %o\n" 255 255 255
Affiche un nombre en hexadécimal et en octal.
Utilisation avec des variables
NOM="Pierre Martin"
SCORE=95
printf "Étudiant : %s, Score : %d points\n" "$NOM" "$SCORE"
Utilise des variables shell comme arguments pour `printf`.
Conseils et précautions
Conseils et points à considérer pour utiliser `printf` efficacement.
Différences avec `echo`
`echo` est principalement utilisé pour l'affichage de chaînes simples et est limité dans l'interprétation des séquences d'échappement (nécessite l'option `-e`) ou le formatage. En revanche, `printf` permet un contrôle précis du format de sortie via les spécificateurs de format et interprète toujours les séquences d'échappement.
- Séquences d'échappement: `printf` interprète toujours les séquences d'échappement. `echo` nécessite l'option `-e`.
- Formatage: `printf` prend en charge divers spécificateurs de format comme `%s`, `%d`, etc., permettant un contrôle fin du format de sortie. `echo` ne dispose pas de cette fonctionnalité.
- Saut de ligne: `echo` effectue un saut de ligne après l'affichage par défaut, tandis que `printf` nécessite de spécifier explicitement `\n`.
Correspondance entre la chaîne de format et les arguments
Le nombre de spécificateurs de format dans la chaîne de format doit correspondre au nombre d'arguments fournis. Si les arguments sont insuffisants, des valeurs par défaut (par exemple, 0 ou une chaîne vide) peuvent être utilisées selon le shell, et si les arguments sont trop nombreux, les arguments excédentaires seront ignorés. Cela peut entraîner des résultats inattendus, il faut donc être prudent.
Précautions lors de l'utilisation des séquences d'échappement
En particulier, pour afficher un caractère antislash (`\`), vous devez l'utiliser deux fois, comme `\\`. Le shell peut interpréter l'antislash en premier, il peut donc être nécessaire de l'échapper avant de le transmettre à `printf`. En général, il est plus sûr d'encadrer la chaîne de format avec des guillemets doubles (").