What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Indholdsfortegnelse:
Når du skriver shell-scripts, kan du være i en situation, hvor du har brug for at videregive en multiline blok af tekst eller kode til en interaktiv kommando, f.eks.
tee
,
cat
eller
sftp
.
I Bash og andre skaller som Zsh er et Here-dokument (Heredoc) en type omdirigering, der giver dig mulighed for at videregive flere linjer med input til en kommando.
Syntaksen til at skrive HereDoc har følgende form:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Den første linje starter med en valgfri kommando efterfulgt af den specielle omdirigeringsoperatør
<<
og afgrænsningsidentifikatoren.- Du kan bruge en hvilken som helst streng som en afgrænsningsidentifikator, de mest almindeligt anvendte er EOF eller END.If afgrænsningsidentifikatoren er ikke citeret, erstatter skallen alle variabler, kommandoer og specialtegn, før de passerer linjerne her-dokument til kommandoen. minustegn til omdirigeringsoperatøren
<<-
, får alle førende fanebetegn til at blive ignoreret. Dette giver dig mulighed for at bruge indrykk, når du skriver her-dokumenter i shell-scripts. Leading whitespace-tegn er ikke tilladt, kun fanen.
- Du kan bruge en hvilken som helst streng som en afgrænsningsidentifikator, de mest almindeligt anvendte er EOF eller END.If afgrænsningsidentifikatoren er ikke citeret, erstatter skallen alle variabler, kommandoer og specialtegn, før de passerer linjerne her-dokument til kommandoen. minustegn til omdirigeringsoperatøren
Grundlæggende Heredoc-eksempler
I dette afsnit vil vi se på nogle grundlæggende eksempler på, hvordan man bruger heredoc.
Heredoc bruges ofte i kombination med kattekommandoen.
I det følgende eksempel passerer vi to linjer med tekst, der indeholder en miljøvariabel og en kommando til
cat
ved hjælp af et her-dokument.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Som du kan se fra output nedenfor, er både variablen og kommandooutputen erstattet:
The current working directory is: /home/linuxize You are logged in as: linuxize
Lad os se, hvad der vil ske, hvis vi vedlægger afgrænseren i enkelt eller dobbelt citater.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Du kan bemærke, at når afgrænseren citeres, udføres ingen parameterudvidelse og kommandosubstitution af 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.
I stedet for at vise output på skærmen kan du omdirigere den til en fil ved hjælp af operatørerne
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Hvis file.txt ikke findes, oprettes den. Når du bruger
>
vil filen blive overskrevet, mens
>>
tilføjer output til filen.
Heredoc-input kan også ledes. I det følgende eksempel erstatter
sed
kommandoen alle forekomster af
l
tegnet med
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Sådan skriver du pipedataene til en fil:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Brug af Heredoc med SSH
Brug af Heredoc er en af de mest praktiske og nemmeste måder at udføre flere kommandoer på et fjernsystem over SSH.
Når du bruger ikke-citeret afgrænser, skal du sørge for at undslippe alle variabler, kommandoer og specialtegn, ellers interpoleres de 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
Du ønsker måske også at konfigurere en SSH-nøglebaseret godkendelse og oprette forbindelse til dine Linux-servere uden at indtaste et kodeord.
Konklusion
I denne vejledning har du lært, hvad der er
heredoc
og hvordan du bruger det i dine shell-scripts.
Sådan kører du Bash på Ubuntu på Windows 10

Aktivering af Windows Subsystem til Linux giver dig mulighed for at køre Bash på Ubuntu på Windows 10, Bash scripts , Linux-kommandolinjeværktøjer, Linux-første værktøjer.
Bash arrays

Arrays er en af de mest anvendte og grundlæggende datastrukturer. I denne artikel dækker vi Bash-matriserne og forklarer, hvordan du bruger dem i dine Bash-scripts.
Bash til løkke

Der er 3 grundlæggende løkkekonstruktioner i Bash-scripting, til loop, while loop og indtil loop. I denne tutorial vil vi dække det grundlæggende for løkker i Bash såvel som pausen og fortsætte udsagn for at ændre strømmen af en løkke.