Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Ici Documents

Nous avons examiné deux méthodes différentes de sortie de notre texte, toutes deux utilisant le echo com


mandat. Il existe une troisième voie appelée ici document or ici script. Un document here est une forme supplémentaire de redirection d'E/S dans laquelle nous incorporons un corps de texte dans notre script et l'injectons dans l'entrée standard d'une commande. Cela fonctionne comme ceci :

commander << jeton

texte

jeton

De commander est le nom de la commande qui accepte l'entrée standard et jeton est une chaîne utilisée pour indiquer la fin du texte incorporé. Nous allons modifier notre script pour utiliser un document ici :



#! / Bin / bash


# Programme pour afficher une page d'informations système


TITLE="Rapport d'informations système pour $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")

TIMESTAMP="Généré $CURRENT_TIME, par $USER"


chat << _EOF_

$ TITRE

$ TITRE

$TIMESTAMP

_EOF_

#! / Bin / bash


# Programme pour afficher une page d'informations système


TITLE="Rapport d'informations système pour $HOSTNAME" CURRENT_TIME=$(date +"%x %r %Z")

TIMESTAMP="Généré $CURRENT_TIME, par $USER"


chat << _EOF_

$ TITRE

$ TITRE

$TIMESTAMP

_EOF_


À la place d'utiliser echo, notre script utilise maintenant cat et un document ici. La chaîne _EOF_ (ce qui signifie « End Of File », une convention courante) a été sélectionné comme jeton et marque la fin du texte incorporé. Notez que le jeton doit apparaître seul et qu'il ne doit pas y avoir d'espace à la fin de la ligne.

Alors, quel est l'avantage d'utiliser un document here ? C'est surtout la même chose que echo, sauf que, par défaut, les guillemets simples et doubles dans les documents ici perdent leur signification particulière pour le shell. Voici un exemple de ligne de commande :



[moi@linuxbox ~]$ foo="du texte"

[moi@linuxbox ~]$ chat << _EOF_

> $foo

[moi@linuxbox ~]$ foo="du texte"

[moi@linuxbox ~]$ chat << _EOF_

> $foo


> "$foo"

> '$foo'

> \$foo

> _EOF_ un peu de texte "un peu de texte" 'un peu de texte'

$foo

> "$foo"

> '$foo'

> \$foo

> _EOF_ un peu de texte "un peu de texte" 'un peu de texte'

$foo


Comme on peut le voir, le shell ne fait pas attention aux guillemets. Il les traite comme des personnages ordinaires. Cela nous permet d'intégrer librement des citations dans un document here. Cela pourrait s'avérer utile pour notre programme de rapports.

Ici, les documents peuvent être utilisés avec n'importe quelle commande qui accepte une entrée standard. Dans cet exemple, nous utilisons un document here pour passer une série de commandes au ftp programme pour récupérer un fichier depuis un serveur FTP distant :



#! / Bin / bash

# Script pour récupérer un fichier 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_ ouvre $FTP_SERVER

utilisateur anonyme moi@linuxbox cd $FTP_PATH

hachage

obtenez $REMOTE_FILE au revoir

_EOF_

ls -l $REMOTE_FILE

#! / Bin / bash

# Script pour récupérer un fichier 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_ ouvre $FTP_SERVER

utilisateur anonyme moi@linuxbox cd $FTP_PATH

hachage

obtenez $REMOTE_FILE au revoir

_EOF_

ls -l $REMOTE_FILE


Si nous modifions l'opérateur de redirection de "<<" à "<<-", le shell ignorera les caractères de tabulation de début dans le document here. Cela permet à un document here d'être indenté, ce qui peut améliorer la lisibilité :



#! / Bin / bash

# Script pour récupérer un fichier via FTP FTP_SERVER=ftp.nl.debian.org

#! / Bin / bash

# Script pour récupérer un fichier 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_ ouvre $FTP_SERVER

utilisateur anonyme moi@linuxbox cd $FTP_PATH

hachage

obtenez $REMOTE_FILE au revoir

_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_ ouvre $FTP_SERVER

utilisateur anonyme moi@linuxbox cd $FTP_PATH

hachage

obtenez $REMOTE_FILE au revoir

_EOF_


ls -l $REMOTE_FILE


Meilleur système d'exploitation Cloud Computing chez OnWorks :