Hvordan du bruker her dokument i bash -programmering

Hvordan du bruker her dokument i bash -programmering
En blokk med kode eller tekst som kan omdirigeres til kommandosskriptet eller det interaktive programmet kalles her dokument eller Heredoc. Ulike typer skriptspråk som bash, sh, csh, ksh, etc., kan ta tekstinngang direkte ved hjelp av her-dokument uten å bruke noen tekstfil. Så når koderen trenger mindre mengde tekstdata, er det enkelt å bruke kode og data i samme fil, og det kan gjøres enkelt ved å bruke her-dokument i skriptet. Uten skriptspråk kan her dokument også brukes på forskjellige språk på høyt nivå som PHP, Perl, etc. Hvordan du kan bruke her-dokument i bashskriptet vises i denne opplæringen.

For å bruke her-dokument i et hvilket som helst bash-skript, må du bruke symbolet << followed by any delimiting identifier after any bash command and close the HereDoc by using the same delimiting identifier at the end of the text. The syntax of writing HereDoc is shown below.

Kommando << HeredocDelimiter
..
..
Heredokdelimiter

Eksempel-1: Bruk av enkel Heredoc-tekst

Når Heredoc brukes i et hvilket som helst skript, er det nødvendig å oppbevare samme navn for start- og sluttavgrenser. Anta at kommandoen er 'katt'Og Heredoc -avgrenseren er LEGG TIL TEKST. Lag en bash -skriptfil som heter Heredoc1.bash med følgende kode for å sjekke enkel bruk av Heredoc.

#!/bin/bash
katt <Denne teksten er
lagt til av her dokument
LEGG TIL TEKST

Kjør følgende kommando for å utføre skriptet.

$ Bash Heredoc1.bash

Produksjon:

Følgende utgang vises etter å ha utført skriptet.

Eksempel-2: Bruk av Heredoc med '-' Symbol

Heredoc bruker '-' Symbol for å undertrykke ethvert faneplass fra hver linje med Heredoc -tekst. I det følgende eksemplet, Tab plass legges til i starten av hver linje, og '-' symbolet brukes før startavgrenser. Når skriptet utføres, utelates alle fanområder fra starten av hver linje, men det skaper ingen effekt på normalt rom. Lag en bash -fil som heter Heredoc2.bash med følgende skript for å teste funksjonen til '-'.

#!/bin/bash
katt <<-ADDTEXT2
Line-1: Her er dokumentet nyttig for å skrive ut kort tekst
Line-2: Her kan dokumentet brukes til å formatere tekst
Line-3: Her kan dokumentet skrive ut variabler i teksten
Linje-4: Her dokument med '-' Fjerner fanen fra linjen
AddText2

Kjør følgende kommando for å utføre skriptet.

$ Bash Heredoc2.sh

Produksjon:

Følgende utgang vises etter å ha utført skriptet. De Tab Plassen er fjernet fra Heredoc -innholdet.

Eksempel-3: Bruk av variabel innen Heredoc-tekst

Lag et nytt bash -skript med følgende kode. Her, to variabler som er navngitt Start og slutt er erklært. Disse variablene brukes i Heredoc -teksten. Hvis du bruker et anførselstegn ved startavgrensen til Heredoc, vil ikke variabelenes verdi skrive ut i konsollen.

#!/bin/bash
start = "hei alle sammen"
slutt = "lykke til"
katt <$ start
Velkommen til Linux -bloggsiden.
$ Slutt
AddText3

Kjør følgende kommando for å utføre skriptet.

$ Bash Heredoc3.sh

Produksjon:

Følgende utgang vises etter å ha utført skriptet. Utgangen viser Heredoc -innholdet med verdien av variablene.

Eksempel-4: Opprett en ny bash-fil ved hjelp av Herdoc

I de forrige eksemplene vises hvordan du kan bruke Heredoc i et hvilket som helst bash -skript. Du kan også opprette en ny bash -fil ved hjelp av Heredoc, vist i neste del av denne opplæringen. Lag en ny bash -fil som heter Heredoc4.sh med følgende kode. Her, Newfile Variabel er erklært å angi filnavnet til det nye bash -skriptet, som vil bli opprettet etter utførelsen av Heredoc4.sh fil. Etter utførelsen, en ny bash -fil som heter produksjon.sh vil bli opprettet.

#!/bin/bash
NewFile = utgang.sh
(
katt < $NewFile

Kjør følgende kommandoer for å teste skriptet ovenfor. Den første kommandoen vil utføre hovedskriptfilen. Den andre kommandoen vil vise innholdet i den nyopprettede filen. Den tredje kommandoen kjører den nyopprettede bash -filen.

$ Bash Heredoc4.sh
$ katteutgang.sh
$ bash output.sh

Produksjon:

Følgende utgang vises etter å ha utført skriptet.

Eksempel-5: Bruke funksjon med Heredoc

Du kan overføre inngangsverdier til variablene til hvilken som helst funksjon av bash -skriptet fra Heredoc -innholdet. Lage en ny ny bash -fil som heter Heredoc5.sh For å teste hvordan funksjon kan brukes med Heredoc. Legg til følgende kode i filen. En funksjon som heter BookInfo er erklært i skriptet, som vil ta data fra Heredoc -tekst. Seks variabler er erklært i funksjonen som heter ISBN, boknavn, Authorname, utgave, publikasjon og pris. For å angi verdien av variablene riktig, må du opprettholde rekkefølgen på verdiene i Heredoc -delen i henhold til variablene som er erklært i funksjonen. Etter å ha angitt dataene i funksjonsvariablene, beregnes prisverdien med 10% rabatt og trykket verdiene til alle variabler i konsollen.

#!/bin/bash
#Declare funksjonen som vil hente data herfra
BookInfo ()

Les ISBN
Les boknavn
Les Authorname
Les utgave
Les publikasjon
Les pris

# Erklære her dokumentere del for å sende data inn i funksjonen
BookInfo <ISBN-78633567809
Easy Laravel 5
W. Jason Gilmore
9. utgave
Learpub
100
AddText5
# Skriv ut verdien på funksjonsvariablene etter beregning av prisverdi med 10% rabatt
((pris = $ pris- $ pris*10/100))
ekko "$ boknavn"
ekko "$ autororname"
ekko "$ utgave, $ publikasjon"
ekko "$" $ pris

Kjør følgende kommando for å utføre skriptet.

$ Heredoc5.bash

Produksjon:

Her er verdien av prisvariabelen satt til 100. Etter å ha satt 10% rabatt på prisverdien, er verdien satt til 90. Etter utførelsen vises følgende utgang i terminalen.

Eksempel-6: Utfør kommandoer inne i Heredoc

Lag en bash -fil som heter Heredoc6.bash med følgende skript for å utføre 'date', 'pwd', og 'hvem er jeg'Kommando med'sudo'Kommando.

#!/bin/bash
# Legg til tre kommandoer i Heredoc -innholdet med 'sudo' -kommandoen
sudo -s <Dato
PWD
hvem er jeg
KOMMANDO

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Utgangen fra de tre kommandoene har skrevet ut i utgangen.

Eksempel-7: Bruk av Heredoc til å skrive flere linjer i en fil

Lag en bash -fil som heter Heredoc6.bash med følgende skript for å legge til flere linjer i tekstfilen som heter temp.tekst og skriv ut filens innhold. Tre linjer vil bli lagt til tekstfilen etter å ha utført koden.

#!/bin/bash
: 'Dette skriptet vil skrive flere linjer
inn i en tekstfil
'
# Skriv flere linjer til en fil ved hjelp av Heredoc
Cat> 'Temp.tekst' <Bash er et populært skriptspråk.
Mange administrative oppgaver kan gjøres enkelt
Ved å bruke bashskript.
Filcontent
# Skriv ut innholdet i filen
kattemperatur.tekst

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Utgangen viser at tre linjer er lagt til i temp.tekst fil.

Eksempel-8: Bruke Heredoc med Pipe for å søke og erstatte innholdet

Heredoc -inngangen kan også røres. Lag en bash -fil med følgende skript for å søke og erstatte et bestemt tegn fra Heredoc -innholdet. Den første Heredoc vil skrive ut originalteksten, og den andre Heredoc vil skrive ut den erstattede teksten. Kommandoen 'Sed' har blitt brukt her for å erstatte alle forekomster av karakteren 'en' av 'EN'.

#!/bin/bash
Ekko "Det originale innholdet er:"
katt <<'ORIGINAL'
Bash er et skallskriptspråk
HTML er et markeringsspråk
JavaScript er et skriptspråk på klientsiden
OPPRINNELIG
# Legg til en ny linje
ekko
ekko "innholdet etter å ha erstattet 'A' av 'A':"
katt <<'REPLACE' | sed 's/a/A/g'
Bash er et skallskriptspråk
HTML er et markeringsspråk
JavaScript er et skriptspråk på klientsiden
ERSTATTE

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. I utgangen er alle 'A' erstattet av 'A'.

Eksempel-9: Bruk av Heredoc for å kommentere linjens blokkering

En av de viktige bruken av Heredoc er å kommentere flere linjer i bashskriptet. Lag en bash -fil med følgende skript for å finne et år er et sprangår eller ikke. Hensikten med skriptet er beskrevet av multi-line kommentarer ved bruk av Heredoc.

#!/bin/bash
<Dette skriptet brukes til å finne ut av det
et år er et sprangår eller ikke en
skuddår
multiline_comment
# Ta 4-sifret årverdi fra brukeren
Echo -n "Angi firesifret år:"
Les år
# Kontroller at årverdien er et sprang eller ikke et sprangår
if [$ (($ yr%400)) -eq 0]; deretter
ekko "$ år er et sprangår.""
elif [$ (($ yr%100)) -eq 0]; deretter
ekko "$ år er ikke et sprangår.""
elif [$ (($ yr%4)) -eq 0]; deretter
ekko "$ år er et sprangår.""
ellers
ekko "$ år er ikke et sprangår.""
fi

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Følgende utgang viser at 2008 er et sprangår og 2021 er ikke et sprangår.

Konklusjon:

De forskjellige bruksområdene til Heredoc -dokumentet har vist i denne opplæringen ved å bruke flere eksempler. Det kan brukes med forskjellige typer skallkommandoer og legge til multi-line kommentarer i bash-skriptet. Bruken av Heredoc vil bli ryddet for bash -brukerne etter å ha øvd på eksemplene på denne opplæringen.