What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Inhoudsopgave:
Wanneer u shell-scripts schrijft, bevindt u zich mogelijk in een situatie waarin u een meerregelig tekstblok of code moet doorgeven aan een interactieve opdracht, zoals
tee
,
cat
of
sftp
.
In Bash en andere shells zoals Zsh is een Here-document (Heredoc) een soort omleiding waarmee u meerdere invoerregels aan een opdracht kunt doorgeven.
De syntaxis van het schrijven van HereDoc heeft de volgende vorm:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- De eerste regel begint met een optioneel commando gevolgd door de speciale omleidingsoperator
<<en de afbakenings-ID.- Je kunt elke string gebruiken als afbakenings-ID, de meest gebruikte zijn EOF of END. Als de afbakenings-ID niet wordt vermeld, vervangt de shell alle variabelen, opdrachten en speciale tekens voordat de hier-documentregels aan de opdracht worden doorgegeven. minteken naar de omleidingsoperator
<<-, zorgt ervoor dat alle voorlooptabtekens worden genegeerd. Hiermee kunt u inspringen gebruiken bij het schrijven van hier-documenten in shellscripts. Voorloopspaties zijn niet toegestaan, alleen tab.
Het hier-documentblok kan tekenreeksen, variabelen, opdrachten en elk ander type invoer bevatten. De laatste regel eindigt met de afbakenende identificatie. Witruimte voor het scheidingsteken is niet toegestaan. - Je kunt elke string gebruiken als afbakenings-ID, de meest gebruikte zijn EOF of END. Als de afbakenings-ID niet wordt vermeld, vervangt de shell alle variabelen, opdrachten en speciale tekens voordat de hier-documentregels aan de opdracht worden doorgegeven. minteken naar de omleidingsoperator
Basis Heredoc-voorbeelden
In deze sectie zullen we enkele basisvoorbeelden bekijken van het gebruik van heredoc.
Heredoc wordt meestal gebruikt in combinatie met het commando cat.
In het volgende voorbeeld geven we twee regels tekst door met een omgevingsvariabele en een opdracht aan
cat
met behulp van een here-document.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Zoals u kunt zien in de onderstaande uitvoer, worden zowel de variabele als de opdrachtuitvoer vervangen:
The current working directory is: /home/linuxize You are logged in as: linuxize
Laten we kijken wat er zal gebeuren als we het scheidingsteken tussen enkele of dubbele aanhalingstekens plaatsen.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
U kunt opmerken dat wanneer het scheidingsteken wordt geciteerd, de parameter niet wordt uitgebreid en de opdracht wordt vervangen door de 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.
In plaats van de uitvoer op het scherm weer te geven, kunt u deze omleiden naar een bestand met de operatoren
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Als file.txt niet bestaat, wordt het gemaakt. Bij gebruik van
>
het bestand overschreven, terwijl
>>
de uitvoer aan het bestand toevoegt.
De heredoc-invoer kan ook worden doorgestuurd. In het volgende voorbeeld vervangt het commando
sed
alle instanties van het
l
teken door
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Om de piped-gegevens naar een bestand te schrijven:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Heredoc gebruiken met SSH
Heredoc gebruiken is een van de handigste en eenvoudigste manieren om meerdere opdrachten op een extern systeem uit te voeren via SSH.
Wanneer u een niet-gescheiden scheidingsteken gebruikt, moet u ervoor zorgen dat u aan alle variabelen, opdrachten en speciale tekens ontsnapt, anders worden ze lokaal geïnterpoleerd:
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
Misschien wilt u ook een op SSH-sleutel gebaseerde verificatie instellen en verbinding maken met uw Linux-servers zonder een wachtwoord in te voeren.
Conclusie
In deze handleiding heb je geleerd wat
heredoc
en hoe je het kunt gebruiken in je shellscripts.
Microsoft Research Asia host poorten op 10 jaar Bash
Microsoft Research Asia is in 1998 van een dozijn mensen gegroeid tot meer dan 350 een decennium later.
Bash uitvoeren op Ubuntu op Windows 10
Als u Windows Subsystem voor Linux inschakelt, kunt u Bash op Ubuntu uitvoeren op Windows 10, Bash-scripts , Linux-opdrachtregelprogramma`s, Linux-eerste hulpprogramma`s.
Bash-arrays
Arrays zijn een van de meest gebruikte en fundamentele gegevensstructuren. In dit artikel behandelen we de Bash-arrays en leggen we uit hoe je ze kunt gebruiken in je Bash-scripts.







