Bash définir la variable de chaîne multiline

Bash définir la variable de chaîne multiline
Supposons que vous ayez rencontré un scénario où vous devez définir un bloc multiline de chaîne dans vos opérations de script bash. Si vous essayez la manière par défaut de définir une variable dans Bash, vous êtes obligé de rencontrer une erreur ou une partie incomplète de la variable.

Ce guide rapide vous montrera des méthodes de définition de variables de chaîne multilines à l'aide des caractères d'échappement et de Heredoc.

Personnages d'échappement bash

Bash, comme la plupart des langages de programmation, offre la possibilité d'utiliser des caractères d'évasion. Les personnages d'échappement nous permettent d'invoquer une nouvelle interprétation des séquences de personnages. Bien que Bash ait divers personnages d'évasion, nous n'avons qu'à nous préoccuper de \ n (nouveau personnage de ligne).

Par exemple, si nous avons une chaîne multiligne dans un script, nous pouvons utiliser le caractère \ n pour créer une nouvelle ligne si nécessaire.

Un exemple d'un tel cas d'utilisation est:

#!/ bac / bash
str = «Ceci est une chaîne \ n-et un autre \ n-et un autre \ n - et la dernière»
echo -e $ str

L'exécution du script ci-dessus imprime les chaînes dans une nouvelle ligne où le caractère \ n existe.

Heredoc

La méthode ci-dessus fonctionne bien pour le texte de ligne simple. Cependant, si nous devons imprimer un texte avec d'autres caractères spéciaux, contrecoups et citations, il devient inutilement complexe. Pour résoudre un tel problème, nous pouvons utiliser Heredoc.

Qu'est-ce qu'un Heredoc?

Un Heredoc est un bloc de code à usage spécial qui indique au shell de lire l'entrée de la source actuelle jusqu'à ce qu'elle rencontre une ligne contenant un délimiteur.

La syntaxe de Heredoc à Bash est:

COMMANDE << DELIMITER

Bloc de heredoc


Délimiteur

Les délimiteurs dans un heredoc peuvent être n'importe quelle chaîne. Cependant, les cordes les plus courantes sont EOF, EOM ou fin.

Une fois que la coquille rencontre le délimiteur, il remplace toutes les variables, commandes et caractères spéciaux, puis transmet les informations à l'intérieur du bloc Heredoc à la commande principale.

Vous pouvez inclure des caractères spéciaux, des chaînes régulières, des variables et d'autres commandes de coquille dans le bloc Heredoc.

Assurez-vous de mettre fin au bloc Heredoc avec le délimiteur. N'ajoutez aucun espace avant le délimiteur.

Chaîne multiline utilisant heredoc

Supposons que vous ayez la chaîne suivante:







Document



À l'intérieur d'un script bash, nous pouvons créer une variable et passer la chaîne au-dessus au chat comme indiqué ci-dessous:

#!/ bac / bash
String = $ (Cat << EOF






Document




Eof
)
Echo $ String

Une fois que vous avez exécuté le script ci-dessus, vous verrez une sortie A:

Comme vous pouvez le voir, nous pouvons imprimer toute la chaîne, y compris tous les caractères spéciaux.

Conclusion

Pour ce guide, nous avons discuté de la façon de définir et d'utiliser une chaîne multiligne dans un script bash. Cependant, il y a plus à Heredoc que discuté ici. Considérez la ressource suivante pour en savoir plus.