What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Innehållsförteckning:
När du skriver skalskript kanske du befinner dig i en situation där du behöver skicka ett multiline block med text eller kod till ett interaktivt kommando, som
tee
,
cat
eller
sftp
.
I Bash och andra skal som Zsh är ett Here-dokument (Heredoc) en typ av omdirigering som låter dig skicka flera inmatningsrader till ett kommando.
Syntaxen för att skriva HereDoc har följande form:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Den första raden börjar med ett valfritt kommando följt av den speciella omdirigeringsoperatören
<<och avgränsningsidentifieraren.- Du kan använda vilken sträng som en avgränsningsidentifierare, de vanligaste är EOF eller END. Om avgränsningsidentifieraren inte är citerad, kommer skalet att ersätta alla variabler, kommandon och specialtecken innan du överför här-dokumentraderna till kommandot. minustecken till omdirigeringsoperatören
<<-, kommer att leda till att alla ledande tabbtecken ignoreras. Detta gör att du kan använda intryck när du skriver här-dokument i skalskript. Ledande whitespace-tecken är inte tillåtna, bara fliken.
Här-dokumentblocket kan innehålla strängar, variabler, kommandon och annan ingångstyp. Den sista raden slutar med avgränsningsidentifieraren. Vitt utrymme framför avgränsaren är inte tillåtet. - Du kan använda vilken sträng som en avgränsningsidentifierare, de vanligaste är EOF eller END. Om avgränsningsidentifieraren inte är citerad, kommer skalet att ersätta alla variabler, kommandon och specialtecken innan du överför här-dokumentraderna till kommandot. minustecken till omdirigeringsoperatören
Grundläggande Heredoc-exempel
I det här avsnittet kommer vi att titta på några grundläggande exempel på hur man använder heredoc.
Heredoc används oftast i kombination med kattkommandot.
I följande exempel passerar vi två rader text som innehåller en miljövariabel och ett kommando till
cat
med ett här-dokument.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Som du kan se från utgången nedan ersätts både variabeln och kommandoutputen:
The current working directory is: /home/linuxize You are logged in as: linuxize
Låt oss se vad som kommer att hända om vi omsluter avgränsaren i enstaka eller dubbla citat.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Du kan märka att när avgränsaren citeras görs ingen parameterutvidgning och kommandosubstitution av skalet.
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.
Istället för att visa utgången på skärmen kan du omdirigera den till en fil med
>
,
>>
-operatörerna.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Om filen.txt inte finns kommer den att skapas. När du använder
>
kommer filen att skrivas över, medan
>>
lägger till utgången till filen.
Heredoc-ingången kan också ledas. I följande exempel ersätter
sed
kommandot alla förekomster av
l
karaktären med
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Så här skriver du pipedata till en fil:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Använda Heredoc med SSH
Att använda Heredoc är ett av de mest bekväma och enklaste sätten att köra flera kommandon på ett fjärrsystem över SSH.
När du använder obegränsad avgränsare, se till att du flyr från alla variabler, kommandon och specialtecken annars kommer de att interpoleras 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 kanske också vill ställa in en SSH-nyckelbaserad autentisering och ansluta till dina Linux-servrar utan att ange ett lösenord.
Slutsats
I den här guiden har du lärt dig vad som är
heredoc
och hur du använder det i dina skalskript.
Microsoft Research Asia Hosts Gates vid 10 års Bash
Microsoft Research Asia har ökat från ett dussin personer 1998 till mer än 350 ett decennium senare.
Så här kör du Bash på Ubuntu på Windows 10
Genom att aktivera Windows Subsystem för Linux kan du köra Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandoradsverktyg, Linux-första verktyg.
Bash-matriser
Matriser är en av de mest använda och grundläggande datastrukturerna. I den här artikeln täcker vi Bash-matriserna och förklarar hur du använder dem i dina Bash-skript.







