Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Qui Documenti

Abbiamo esaminato due diversi metodi di output del nostro testo, entrambi utilizzando il eco com


mand. C'è un terzo modo chiamato a qui documento or qui script. Un documento qui è una forma aggiuntiva di reindirizzamento I/O in cui incorporiamo un corpo di testo nel nostro script e lo inseriamo nell'input standard di un comando. Funziona così:

command << token

testo

token

where command è il nome del comando che accetta l'input standard e token è una stringa utilizzata per indicare la fine del testo incorporato. Modificheremo il nostro script per utilizzare un documento qui:



#! / Bin / bash


# Programma per l'output di una pagina di informazioni di sistema


TITLE="Rapporto informazioni di sistema per $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")

TIMESTAMP="Generato $CURRENT_TIME, da $USER"


gatto << _EOF_

$TITLE

$TITLE

$TIMESTAMP

_EOF_

#! / Bin / bash


# Programma per l'output di una pagina di informazioni di sistema


TITLE="Rapporto informazioni di sistema per $HOSTNAME" CURRENT_TIME=$(data +"%x %r %Z")

TIMESTAMP="Generato $CURRENT_TIME, da $USER"


gatto << _EOF_

$TITLE

$TITLE

$TIMESTAMP

_EOF_


Invece di usare eco, il nostro script ora usa gatto e un documento qui. La stringa _EOF_ (che significa "Fine del file", una convenzione comune) è stato selezionato come token e contrassegna la fine del testo incorporato. Nota che il token deve apparire da solo e che non devono esserci spazi finali sulla riga.

Quindi qual è il vantaggio di utilizzare un documento qui? È per lo più lo stesso di eco, tranne che, per impostazione predefinita, le virgolette singole e doppie all'interno di qui documenti perdono il loro significato speciale per la shell. Ecco un esempio di riga di comando:



[io@linuxbox~]$ foo="un testo"

[io@linuxbox~]$ gatto << _EOF_

> $ foo

[io@linuxbox~]$ foo="un testo"

[io@linuxbox~]$ gatto << _EOF_

> $ foo


> "$pippo"

> '$pippo'

> \$pippo

> _EOF_ un po' di testo "un po' di testo" 'un po' di testo'

$ foo

> "$pippo"

> '$pippo'

> \$pippo

> _EOF_ un po' di testo "un po' di testo" 'un po' di testo'

$ foo


Come possiamo vedere, la shell non presta attenzione alle virgolette. Li tratta come personaggi ordinari. Questo ci consente di inserire liberamente le citazioni all'interno di un documento qui. Questo potrebbe rivelarsi utile per il nostro programma di report.

Qui i documenti possono essere utilizzati con qualsiasi comando che accetta input standard. In questo esempio, usiamo un documento qui per passare una serie di comandi al FTP programma per recuperare un file da un server FTP remoto:



#! / Bin / bash

# Script per recuperare un file tramite 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_ apre $SERVER_FTP

utente anonimo me@linuxbox cd $FTP_PATH

hash

prendi $REMOTE_FILE ciao

_EOF_

ls -l $FILE_REMOTO

#! / Bin / bash

# Script per recuperare un file tramite 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_ apre $SERVER_FTP

utente anonimo me@linuxbox cd $FTP_PATH

hash

prendi $REMOTE_FILE ciao

_EOF_

ls -l $FILE_REMOTO


Se cambiamo l'operatore di reindirizzamento da "<<" a "<<-", la shell ignorerà i caratteri di tabulazione iniziali nel documento qui. Ciò consente di far rientrare un documento qui, che può migliorare la leggibilità:



#! / Bin / bash

# Script per recuperare un file tramite FTP FTP_SERVER=ftp.nl.debian.org

#! / Bin / bash

# Script per recuperare un file tramite 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_ apri $FTP_SERVER

utente anonimo me@linuxbox cd $FTP_PATH

hash

prendi $REMOTE_FILE ciao

_EOF_


ls -l $FILE_REMOTO

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


ftp -n <<- _EOF_ apri $FTP_SERVER

utente anonimo me@linuxbox cd $FTP_PATH

hash

prendi $REMOTE_FILE ciao

_EOF_


ls -l $FILE_REMOTO


Il miglior sistema operativo cloud computing su OnWorks: