What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Table des matières:
Lors de l'écriture de scripts shell, vous pouvez être dans une situation où vous devez passer un bloc de texte ou de code multiligne à une commande interactive, telle que
tee
,
cat
ou
sftp
.
Dans Bash et d'autres shells comme Zsh, un document Here (Heredoc) est un type de redirection qui vous permet de passer plusieurs lignes d'entrée à une commande.
La syntaxe de l'écriture de HereDoc prend la forme suivante:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- La première ligne commence par une commande facultative suivie de l'opérateur de redirection spécial
<<et de l'identifiant de délimitation.- Vous pouvez utiliser n'importe quelle chaîne comme identificateur de délimitation, les plus couramment utilisés étant EOF ou END.Si l'identificateur de délimitation n'est pas cité, le shell remplacera toutes les variables, commandes et caractères spéciaux avant de passer les lignes du document ici à la commande. signe moins à l'opérateur de redirection
<<-, entraînera l'ignorance de tous les caractères de tabulation de début. Cela vous permet d'utiliser l'indentation lors de l'écriture de documents ici dans des scripts shell. Les premiers espaces ne sont pas autorisés, uniquement les tabulations.
Le bloc here-document peut contenir des chaînes, des variables, des commandes et tout autre type d'entrée. La dernière ligne se termine par l'identifiant de délimitation. Les espaces blancs devant le délimiteur ne sont pas autorisés. - Vous pouvez utiliser n'importe quelle chaîne comme identificateur de délimitation, les plus couramment utilisés étant EOF ou END.Si l'identificateur de délimitation n'est pas cité, le shell remplacera toutes les variables, commandes et caractères spéciaux avant de passer les lignes du document ici à la commande. signe moins à l'opérateur de redirection
Exemples de base Heredoc
Dans cette section, nous examinerons quelques exemples de base sur la façon d'utiliser heredoc.
Heredoc est le plus souvent utilisé en combinaison avec la commande cat.
Dans l'exemple suivant, nous passons deux lignes de texte contenant une variable d'environnement et une commande à
cat
utilisant un document here.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Comme vous pouvez le voir sur la sortie ci-dessous, la variable et la sortie de la commande sont remplacées:
The current working directory is: /home/linuxize You are logged in as: linuxize
Voyons ce qui se passera si nous mettons le délimiteur entre guillemets simples ou doubles.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Vous pouvez remarquer que lorsque le délimiteur est cité, aucune expansion de paramètre et substitution de commande n'est effectuée par le shell.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Au lieu d'afficher la sortie à l'écran, vous pouvez la rediriger vers un fichier à l'aide des opérateurs
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Si le fichier.txt n'existe pas, il sera créé. Lorsque vous utilisez
>
le fichier sera écrasé, tandis que le
>>
ajoutera la sortie au fichier.
L'entrée heredoc peut également être canalisée. Dans l'exemple suivant, la commande
sed
remplacera toutes les instances du caractère
l
par
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Pour écrire les données canalisées dans un fichier:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Utilisation de Heredoc avec SSH
L'utilisation de Heredoc est l'un des moyens les plus pratiques et les plus simples pour exécuter plusieurs commandes sur un système distant via SSH.
Lorsque vous utilisez un délimiteur sans guillemets, assurez-vous d'échapper toutes les variables, commandes et caractères spéciaux, sinon ils seront interpolés localement:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Vous pouvez également configurer une authentification basée sur une clé SSH et vous connecter à vos serveurs Linux sans entrer de mot de passe.
Conclusion
Dans ce guide, vous avez appris ce qu'est
heredoc
et comment l'utiliser dans vos scripts shell.
Comment exécuter Bash sous Ubuntu sous Windows 10
L`activation de Windows Subsystem pour Linux vous permettra d`exécuter Bash sur Ubuntu sous Windows 10, scripts Bash , Outils de ligne de commande Linux, premiers outils Linux
Tableaux Bash
Les tableaux sont l'une des structures de données les plus utilisées et les plus fondamentales. Dans cet article, nous allons couvrir les tableaux Bash et expliquer comment les utiliser dans vos scripts Bash.
Bash for loop
Il existe 3 constructions de boucle de base dans les scripts Bash, pour la boucle, la boucle while et la boucle until. Dans ce didacticiel, nous couvrirons les bases des boucles for dans Bash ainsi que les instructions break et continue pour modifier le flux d'une boucle.







