OnWorks Linux en Windows Online WorkStations

logo

Gratis online hosting voor werkstations

<Vorige | Inhoud | Volgende>

Hier documenten

We hebben gekeken naar twee verschillende methoden om onze tekst uit te voeren, beide met behulp van de echo com


mand. Er is een derde manier, genaamd a hier document or hier script. Een here-document is een aanvullende vorm van I/O-omleiding waarbij we een tekstgedeelte in ons script insluiten en dit in de standaardinvoer van een commando invoeren. Het werkt als volgt:

commando << teken

tekst

teken

WAAR commando is de naam van het commando dat standaardinvoer accepteert en teken is een tekenreeks die wordt gebruikt om het einde van de ingesloten tekst aan te geven. We zullen ons script aanpassen om een ​​hier-document te gebruiken:



#! / Bin / bash


# Programma om een ​​systeeminformatiepagina uit te voeren


TITLE="Systeeminformatierapport voor $HOSTNAME" CURRENT_TIME=$(datum +"%x %r %Z")

TIMESTAMP="$CURRENT_TIME gegenereerd, door $USER"


kat << _EOF_

$TITEL

$TITEL

$TIJDSTAMP

_EOF_

#! / Bin / bash


# Programma om een ​​systeeminformatiepagina uit te voeren


TITLE="Systeeminformatierapport voor $HOSTNAME" CURRENT_TIME=$(datum +"%x %r %Z")

TIMESTAMP="$CURRENT_TIME gegenereerd, door $USER"


kat << _EOF_

$TITEL

$TITEL

$TIJDSTAMP

_EOF_


In plaats van gebruiken echo, ons script gebruikt nu hoe en een hier-document. De snaar _EOF_ (wat 'Einde van het bestand' betekent, een gebruikelijke conventie) werd geselecteerd als token en markeert het einde van de ingesloten tekst. Houd er rekening mee dat het token alleen moet verschijnen en dat er geen spaties achteraan op de regel mogen staan.

Dus wat is het voordeel van het gebruik van een hier-document? Het is grotendeels hetzelfde als echo, behalve dat enkele en dubbele aanhalingstekens in deze documenten standaard hun speciale betekenis aan de shell verliezen. Hier is een voorbeeld van een opdrachtregel:



[ik@linuxbox ~]$ foo = "een stukje tekst"

[ik@linuxbox ~]$ kat << _EOF_

> $ foo

[ik@linuxbox ~]$ foo = "een stukje tekst"

[ik@linuxbox ~]$ kat << _EOF_

> $ foo


> "$foe"

> '$ foo'

> \$foe

> _EOF_ wat tekst "wat tekst" 'wat tekst'

$ foo

> "$foe"

> '$ foo'

> \$foe

> _EOF_ wat tekst "wat tekst" 'wat tekst'

$ foo


Zoals we kunnen zien, besteedt de shell geen aandacht aan de aanhalingstekens. Het behandelt ze als gewone karakters. Hierdoor kunnen we citaten vrij in een here-document insluiten. Dit zou handig kunnen zijn voor ons rapportprogramma.

Hier kunnen documenten worden gebruikt met elk commando dat standaardinvoer accepteert. In dit voorbeeld gebruiken we een here-document om een ​​reeks opdrachten door te geven aan de ftp programma om een ​​bestand op te halen van een externe FTP-server:



#! / Bin / bash

# Script om een ​​bestand op te halen via FTP FTP_SERVER=ftp.nl.debian.org

FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz


ftp -n << _EOF_ opent $FTP_SERVER

gebruiker anoniem mij@linuxbox cd $FTP_PATH

hachee

ontvang $REMOTE_FILE tot ziens

_EOF_

ls -l $REMOTE_FILE

#! / Bin / bash

# Script om een ​​bestand op te halen via FTP FTP_SERVER=ftp.nl.debian.org

FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz


ftp -n << _EOF_ opent $FTP_SERVER

gebruiker anoniem mij@linuxbox cd $FTP_PATH

hachee

ontvang $REMOTE_FILE tot ziens

_EOF_

ls -l $REMOTE_FILE


Als we de omleidingsoperator wijzigen van “<<” in “<<-”, negeert de shell leidende tabtekens in het here-document. Hierdoor kan een here-document worden ingesprongen, wat de leesbaarheid kan verbeteren:



#! / Bin / bash

# Script om een ​​bestand op te halen via FTP FTP_SERVER=ftp.nl.debian.org

#! / Bin / bash

# Script om een ​​bestand op te halen via FTP FTP_SERVER=ftp.nl.debian.org


FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz


ftp -n <<- _EOF_ open $FTP_SERVER

gebruiker anoniem mij@linuxbox cd $FTP_PATH

hachee

ontvang $REMOTE_FILE tot ziens

_EOF_


ls -l $REMOTE_FILE

FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz


ftp -n <<- _EOF_ open $FTP_SERVER

gebruiker anoniem mij@linuxbox cd $FTP_PATH

hachee

ontvang $REMOTE_FILE tot ziens

_EOF_


ls -l $REMOTE_FILE


Top OS Cloud Computing bij OnWorks: