What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Innholdsfortegnelse:
Når du skriver skallskript, kan du være i en situasjon der du trenger å sende en flersidig blokk med tekst eller kode til en interaktiv kommando, for eksempel
tee
,
cat
eller
sftp
.
I Bash og andre skjell som Zsh, er et Here-dokument (Heredoc) en type omdirigering som lar deg sende flere linjer med input til en kommando.
Syntaksen til å skrive HereDoc har følgende form:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Den første linjen starter med en valgfri kommando etterfulgt av den spesielle viderekoblingsoperatøren
<<
og avgrensningsidentifikatoren.- Du kan bruke hvilken som helst streng som en avgrensende identifikator, den mest brukte er EOF eller END.If avgrensningsidentifikatoren er ikke sitert, vil skallet erstatte alle variabler, kommandoer og spesialtegn før du sender hier-dokumentlinjene til kommandoen. minustegn til omdirigeringsoperatøren
<<-
, vil føre til at alle ledende fanetegn blir ignorert. Dette lar deg bruke innrykk når du skriver her-dokumenter i skallskript. Ledende mellomromstegn er ikke tillatt, bare fane.
- Du kan bruke hvilken som helst streng som en avgrensende identifikator, den mest brukte er EOF eller END.If avgrensningsidentifikatoren er ikke sitert, vil skallet erstatte alle variabler, kommandoer og spesialtegn før du sender hier-dokumentlinjene til kommandoen. minustegn til omdirigeringsoperatøren
Grunnleggende heredoc-eksempler
I dette avsnittet skal vi se på noen grunnleggende eksempler på hvordan du bruker heredoc.
Heredoc brukes ofte i kombinasjon med kattekommandoen.
I det følgende eksemplet passerer vi to linjer med tekst som inneholder en miljøvariabel og en kommando til
cat
ved hjelp av et her-dokument.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Som du ser fra utdataene nedenfor, erstattes både variabelen og kommandoutgangen:
The current working directory is: /home/linuxize You are logged in as: linuxize
La oss se hva som vil skje hvis vi omslutter avgrenseren i enkle eller doble sitater.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Du kan legge merke til at når kvitteringen er sitert, blir ingen parameterutvidelse og kommandosubstitusjon utført av skallet.
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.
I stedet for å vise utdataene på skjermen kan du omdirigere den til en fil ved å bruke
>
,
>>
-operatørene.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Hvis file.txt ikke eksisterer, vil den bli opprettet. Når du bruker
>
vil filen overskrives, mens
>>
vil legge utdata til filen.
Heredoc-inngangene kan også røres. I det følgende eksemplet vil
sed
kommandoen erstatte alle forekomster av
l
tegnet med
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Slik skriver du pipedataene til en fil:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Bruker Heredoc med SSH
Å bruke Heredoc er en av de mest praktiske og enkleste måtene å utføre flere kommandoer på et eksternt system over SSH.
Når du bruker unoterte avgrensere, må du sørge for å slippe unna alle variabler, kommandoer og spesialtegn ellers blir de interpolert lokalt:
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
Det kan også være lurt å sette opp en SSH-nøkkelbasert autentisering og koble til Linux-serverne dine uten å oppgi et passord.
Konklusjon
I denne guiden har du lært hva som er
heredoc
og hvordan du bruker det i skallskriptene dine.
Microsoft Research Asia Hosts Gates på 10 år Bash

Microsoft Research Asia har vokst fra et dusin mennesker i 1998 til over 350 et tiår senere.
Slik kjører du Bash på Ubuntu på Windows 10

Aktivering av Windows Subsystem for Linux vil tillate deg å kjøre Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandolinjeverktøy, Linux-første verktøy.
Bash-matriser

Arrays er en av de mest brukte og grunnleggende datastrukturer. I denne artikkelen skal vi dekke Bash-matriser, og forklare hvordan du bruker dem i Bash-skriptene dine.