Document here en Bash

Fumbani Banda 30 janvier 2023
  1. Qu’y a-t-il here Document dans Bash
  2. Utilisez ici le document pour mettre une chaîne multiligne dans un fichier dans Bash
  3. Utilisez Here Document pour écrire des scripts de manière interactive dans Bash
  4. Utilisez Here Document pour transmettre des données à une fonction dans Bash
  5. Désactiver la substitution de paramètres dans Here Document in Bash
Document here en Bash

Ce didacticiel explique ce qu’est le document here et son utilisation pour écrire une chaîne multiligne dans un fichier, écrire des scripts Bash de manière interactive, l’utiliser avec des fonctions et désactiver la substitution de paramètres.

Qu’y a-t-il here Document dans Bash

Heredoc est l’abréviation de here document. Heredoc utilise un programme interactif pour fournir une entrée à une commande. L’heredoc utilise Here Tag pour indiquer la fin de la saisie d’une commande.

Le premier Here Tag définit le Here Tag qui indiquera la fin de la saisie. La notation utilisée pour ce document est indiquée ci-dessous.

command <<Here Tag
>command1
>command2
>command3
>Here Tag

Le premier Here Tag est précédé du symbole <<. Ce symbole dirige l’entrée interactive pour le here document vers command comme entrée standard pour un traitement ultérieur.

Lors de la définition d’un Here Tag, assurez-vous qu’il ne doit pas apparaître dans la liste des commandes pour éviter toute confusion.

Utilisez ici le document pour mettre une chaîne multiligne dans un fichier dans Bash

Nous utilisons le document here et la commande cat pour saisir une chaîne multiligne dans un fichier texte de manière interactive. Le EOF qui vient après le symbole << définit la Here Tag pour le document here.

Cela signifie que nous allons saisir une chaîne multiligne sur le shell interactif jusqu’à ce que le shell voie le Here Tag, EOF, dans notre cas. L’opérateur de redirection de sortie, >, est utilisé pour diriger la sortie standard de la commande cat vers le fichier spécifié, output.txt, dans ce cas.

cat <<EOF > output.txt
> Hello user.
> Welcome to DelftStack.
> Hope you enjoy your stay.
> EOF

En utilisant le symbole >>, l’opérateur de redirection ajoute la sortie de la commande cat au fichier spécifié tandis que le symbole > crée un nouveau fichier, et si le fichier existait déjà, il réécrit le contenu du dossier.

Utilisez Here Document pour écrire des scripts de manière interactive dans Bash

Nous utilisons le document here et la commande cat pour écrire un script Bash de manière interactive et rediriger la sortie vers un script Bash. Nous définissons le Here Tag après le symbole << et délimitons la fin de l’entrée interactive avec le Here Tag.

Le Here Tag dans le script ci-dessous est EOF. Nous utilisons l’opérateur de redirection de sortie, >, pour rediriger la sortie vers le script Bash, echo.sh.

cat <<EOF > echo.sh
> #!/bin/bash
>
> echo "Hello World!"
> echo "Welcome to DelftStack."
> EOF

À l’aide de la commande cat, nous vérifions le contenu du script echo.sh.

cat echo.sh

Nous avons écrit avec succès le script Bash en utilisant le document ici à partir de la sortie ci-dessous.

#!/bin/bash

echo "Hello World!"
echo "Welcome to DelftStack."

Utilisez Here Document pour transmettre des données à une fonction dans Bash

Le script ci-dessous lit l’entrée du document ici. Nous avons défini une fonction dans le script appelée GetPersonalInfo. La fonction a des commandes qui lisent les données d’entrée.

Nous avons utilisé le document here pour transmettre les données d’entrée à la fonction et utilisé les commandes echo pour afficher les données sur la sortie standard. Les variables définies à l’intérieur de la fonction sont accessibles en dehors de la fonction car les variables dans Bash sont globales par défaut à moins que le mot-clé local ne les ait définies.

#!/bin/bash
GetPersonalInfo(){
    read fname
    read lname
    read country
}

GetPersonalInfo <<EOF
John
Doe
USA
EOF

echo "Personal Information"
echo
echo "First Name: $fname"
echo "Last name: $lname"
echo "Country of Residence: $country"

L’exécution du script Bash produit la sortie suivante.

Personal Information

First Name: John
Last name: Doe
Country of Residence: USA

Désactiver la substitution de paramètres dans Here Document in Bash

Nous générons un nouveau script à partir du script existant en utilisant le document ici dans le script ci-dessous. Le Here Tag, EOF, a été placé entre guillemets simples pour éviter la substitution de paramètres à l’intérieur du document here.

Citant le premier Here Tag indique au document here de préserver la signification littérale des caractères spéciaux à l’intérieur du document here.

#!/bin/bash
echo "This script generates another script."

cat <<'EOF' > add.sh
#!/bin/bash

x=10
y=11

let "sum = $x + $y"
echo "Total of $x and $y is $sum"
EOF

Nous avons utilisé la commande cat pour vérifier le contenu du script nouvellement généré, add.sh.

#!/bin/bash
x=10
y=11

let "sum = $x + $y"
echo "Total of $x and $y is $sum"

L’exécution du script nouvellement généré produit la sortie suivante sur le terminal.

Total of 10 and 11 is 21
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub