GNU/Linux >> Tutoriels Linux >  >> Linux

Bash printf - Comment imprimer une variable dans Bash

Présentation

Le bash printf La commande est un outil utilisé pour créer une sortie formatée. C'est un shell intégré, similaire à printf() fonction en C/C++, Java, PHP et autres langages de programmation. La commande vous permet d'imprimer du texte formaté et des variables dans la sortie standard.

Utilisez printf dans les scripts bash pour augmenter l'efficacité et la réutilisabilité lors de la programmation.

Dans ce didacticiel, vous apprendrez à utiliser le printf commande sous Linux pour imprimer des variables et formater la sortie.

Prérequis

  • Une machine exécutant Linux
  • Accès à un terminal (Ctrl + Alt + T )

Syntaxe bash printf

Le printf La commande accepte la syntaxe suivante :

printf [-v var] [format specifiers] [arguments]

[-v var]

Le -v facultatif flag attribue la sortie au [var] variable au lieu de l'imprimer dans la sortie standard.

[format specifiers]

Les spécificateurs de format sont des chaînes qui déterminent les méthodes de formatage des spécificateurs. La section suivante comprend une liste des spécificateurs acceptés.

[arguments]

Les arguments peuvent être n'importe quelle valeur ou variable, et les [format specifiers] pointez sur [arguments] . S'il y a plus d'arguments que de spécificateurs de format, la chaîne de format est réutilisée jusqu'à ce qu'elle interprète le dernier argument.

S'il y a moins de spécificateurs de format que d'arguments, les formats numériques sont mis à zéro (0 ), tandis que les formats de chaîne sont définis sur null (vide).

Spécificateurs printf

Le tableau suivant montre les printf communs spécificateurs de format et leurs descriptions :

Spécificateur de format Description
%c Traitez les arguments comme un seul caractère.
%d Traiter l'entrée comme un nombre décimal (entier) (base 10).
%e Traite l'entrée comme un nombre exponentiel à virgule flottante.
%f Traiter l'entrée comme un nombre à virgule flottante.
%i Traiter l'entrée comme un nombre entier (base 10).
%o Traite l'entrée comme un nombre octal (base 8).
%s Traitez l'entrée comme une chaîne de caractères.
%u Traiter l'entrée comme un nombre décimal (entier) non signé.
%x Traite l'entrée comme un nombre hexadécimal (base 16).
%% Imprimez un signe de pourcentage.
%Wd Imprimez le W entier X chiffres larges.
%(format)T Sortie une chaîne date-heure résultant de l'utilisation de format comme chaîne de format pour strftime . L'argument correspondant peut être le nombre de secondes depuis Epoch (1er janvier 1970, 00:00), -1 (l'heure actuelle), ou -2 (heure de démarrage du shell). Ne pas spécifier d'argument utilise l'heure actuelle comme valeur par défaut.
\% Imprimez un signe de pourcentage.
\n Imprime un newline caractère.
\t Imprimer un tab caractère.

Certains spécificateurs de format acceptent des modificateurs de format qui modifient leurs actions. Saisissez les modificateurs entre les % caractère et le caractère qui spécifie le format.

Les modificateurs de format disponibles sont :

  • <N> . Entrez un nombre qui spécifie une largeur de champ minimale. Si le texte de sortie est plus court, il est rempli d'espaces. Si le texte est plus long, le champ se développe.
  • . (point) . Lorsqu'il est utilisé avec un modificateur de largeur de champ, le champ ne s'agrandit pas pour un texte plus long. Au lieu de cela, le texte est tronqué.
  • - . Aligne à gauche le texte imprimé. L'alignement par défaut est à droite.
  • 0 . Complète les chiffres avec des zéros au lieu d'espaces.
  • <space> . Complète un nombre positif avec un espace et un nombre négatif avec un signe moins (- ).
  • + . Imprime tous les nombres signés (+ pour positif, - pour négatif).
  • ' . Pour les conversions décimales, applique le séparateur de regroupement des milliers à la partie entière de la sortie en fonction du LC_NUMERIC actuel fichier.

Exemples d'impression bash

Les exemples ci-dessous illustrent des cas d'utilisation courants et différentes manières de formater la sortie à l'aide de printf .

Bien que la commande puisse imprimer des variables dans le terminal, il est plus avantageux de l'utiliser dans des scripts bash car elles permettent la réutilisation du code et facilitent l'automatisation.

Séparer la sortie avec un caractère de saut de ligne

Contrairement à echo , en utilisant printf pour imprimer une chaîne ou une variable sans aucun spécificateur de format affiche le texte non formaté sur une seule ligne. Pour ajouter un caractère de saut de ligne et séparer les entrées, spécifiez le \n spécificateur de format :

Un caractère de saut de ligne sépare maintenant la sortie imprimée.

Imprimer plusieurs variables

Utilisez printf pour imprimer plusieurs variables dans la sortie standard. Suivez les étapes ci-dessous :

1. Ouvrez le terminal (Ctrl + Alt + T ) et créez un script bash à l'aide d'un éditeur de texte tel que vi/vim :

vi script.sh

2. Saisissez les lignes suivantes :

#!/bin/bash
printf "Enter your name:\n"
read name
printf "Enter your surname:\n"
read surname 
printf 'Welcome: %s\n' "$name $surname"

Le %s dans la chaîne de format pointe vers les variables définies dans les lignes précédentes, tandis que \n ordonne à printf pour ajouter un caractère de saut de ligne.

3. Enregistrez le script et quittez vi en saisissant :

:wq

4. Exécutez le script :

bash script.sh

5. Saisissez les valeurs demandées pour les deux variables et vérifiez le résultat :

Le printf La commande stocke l'entrée dans les deux variables, puis imprime les variables dans la sortie standard.

Imprimer une variable dans une table fictive

Ajoutez automatiquement un rembourrage dynamique ou modifiez l'alignement de la sortie variable à l'aide de printf . Suivez les étapes ci-dessous pour imprimer une variable dans un tableau fictif :

1. Créez un fichier de script :

vi table.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
var='hello'
printf '|%10s|\n' "$var"

Le %10 garantit qu'il y a dix caractères dans les symboles de pipe, remplissant la sortie variable avec des caractères d'espacement jusqu'à cette longueur. Les s traite la variable d'entrée comme une chaîne.

3. Exécutez le script et vérifiez le résultat :

bash table.sh

La commande génère la variable entourée de symboles de canalisation et l'aligne à droite par défaut. Pour aligner la sortie sur le côté gauche, ajoutez le - modificateur après le % caractère dans la chaîne de format :

#!/bin/bash
var='hello'
printf '|%-10s|\n' "$var"

Ajouter des décimales

Utilisez printf avec le %f spécificateur de format pour traiter l'entrée comme un nombre à virgule flottante et ajouter la précision de deux décimales. Suivez les étapes ci-dessous :

1. Créez un script bash :

vi precision.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "%5.2f\n" "$number"

3. Exécutez le script :

bash precision.sh

La sortie imprime la variable sous la forme d'un nombre à virgule flottante arrondi à deux décimales.

Stocker des données dans une variable

Utilisez le -v drapeau avec printf pour assigner une variable shell pour stocker les données au lieu de les imprimer dans la sortie standard.

Suivez les étapes ci-dessous :

1. Créez un script bash :

vi variable.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
printf -v var 'Welcome'
printf '%s\n' "$var"

3. Exécutez le script :

bash variable.sh

La sortie imprime le contenu de la variable stockée.

Convertir des nombres hexadécimaux

Le %d le spécificateur de format indique printf pour traiter l'entrée comme un nombre décimal (entier). Utilisez le spécificateur pour créer un script qui convertit les nombres hexadécimaux en nombres décimaux.

Suivez les étapes ci-dessous :

1. Créez un script bash :

vi convert.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
printf 'Enter a hexadecimal number:\n'
read number
printf "%d\n" "$number"

3. Exécutez le script :

bash convert.sh

Le script convertit le nombre hexadécimal d'entrée en nombre décimal.

Convertir les nombres décimaux en octaux

Utilisez le %o spécificateur de format pour convertir les nombres décimaux en nombres octaux. Suivez les étapes ci-dessous :

1. Créez un script :

vi octal.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "The octal number of "$number" is %o\n" "$number"

3. Exécutez le script :

bash octal.sh

Le script convertit la valeur décimale saisie en valeur octale.

Imprimer la date

Créez un script qui utilise printf pour afficher la date actuelle. Suivez les étapes ci-dessous :

1. Créez un script :

vi datetime.sh

2. Saisissez les lignes suivantes et enregistrez le script :

#!/bin/bash
printf 'Today is %(%F)T\n' -1

Le %F traite l'entrée comme un nombre à virgule flottante, tandis que -1 indique la date actuelle.

3. Exécutez le script pour vérifier s'il fonctionne :

bash datetime.sh

La sortie indique la date et l'heure actuelles.

Ajouter des virgules aux milliers

Lorsque vous traitez avec des nombres, utilisez le ' modificateur pour rendre la sortie plus lisible en ajoutant des virgules pour indiquer des milliers. Suivez les étapes ci-dessous :

1. Créez un script bash :

vi decimals.sh

2. Saisissez les lignes suivantes :

#!/bin/bash
printf "Enter a number:\n"
read number
printf "%'d\n" $number

3. Exécutez le script :

bash decimals.sh

Après avoir entré un nombre, le script utilise printf pour ajouter automatiquement les virgules à la valeur d'entrée.

Obtenir le code ASCII du caractère

Créez un script qui utilise printf pour afficher l'ASCII d'un caractère d'entrée valeur. Suivez les étapes ci-dessous :

1. Créez un script :

vi character.sh

2. Saisissez les lignes suivantes puis enregistrez le script :

#!/bin/bash
printf "Enter a character to get character code:\n"
read character
printf "%d\n" "'$character"

3. Exécutez le script et testez s'il fonctionne :

bash character.sh

Le script affiche la valeur ASCII du caractère d'entrée.


Linux
  1. Script bash (I)

  2. Comment imprimer une variable avec un alignement central rembourré ?

  3. Comment vérifier si Bash peut imprimer des couleurs ?

  4. Comment autoriser uniquement certains caractères dans une variable bash ?

  5. Comment tester si une variable est un nombre dans Bash ?

Variable d'exportation bash

Comment incrémenter et décrémenter une variable dans Bash (compteur)

Commande Bash printf

Comment définir une variable d'environnement dans Bash

Comment puis-je compter le nombre de caractères dans une variable Bash

Comment supprimer la variable readonly dans bash ?