Document here en Bash
-
Qu’y a-t-il
here
Document dans Bash - Utilisez ici le document pour mettre une chaîne multiligne dans un fichier dans Bash
- Utilisez Here Document pour écrire des scripts de manière interactive dans Bash
- Utilisez Here Document pour transmettre des données à une fonction dans Bash
- Désactiver la substitution de paramètres dans Here Document in 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