Page de démarrage > lang > shell 
 en de es it nl pl pt pt_BR mk sq ca hu cs tr ar fa id vi ko ja ru zh zh_TW eo
Précédent  Suivant  Éditer  Renommer  Annuler  Rafraîchir  Rechercher  Administration  
Documentation
Historique
 
Attention! La traduction de cette page n'est pas à jour.  Voir la version anglaise 
SHELL
[ Process = ] SHELL Command [ WAIT ] [ FOR { { READ | INPUT } | { WRITE | OUTPUT } } ] [ AS Name ]
SHELL Command TO Variable

Exécute une commande dans un "shell" système. Un objet de Process interne est créé pour gérer la commande.

Syntaxe standard

La commande est une chaîne contenant une commande passée au shell (/bin/sh).

Si vous utilisez les mots clefs INPUT et OUTPUT au lieu de READ et WRITE, alors le processus est exécuté à l'intérieur d'un terminal virtuel. Ca signifie que le processus pensera être exécuté à l'intérieur d'un vrai terminal.

Name est le nom d'évènement utilisé par l'objet de Process. Par défaut, c'est "Process".

Vous pouvez obtenir une référence à l'objet de Process interne créé en utilisant une affectation.

Syntaxe rapide

Si vous utilisez la seconde syntaxe, la commande est exécutée, l'interpréteur attend la fin de la commande, et la sortie de la commande complète est mise dans la chaîne indiquée.

Vous n’avez pas de contrôle sur le processus exécuté.

Exemple

' Récupère le contenu d'un répertoire

SHELL "ls -la /tmp" WAIT

' Même chose, mais en arrière plan

DIM Content AS String

SHELL "ls -la /tmp" FOR READ

...

PUBLIC SUB Process_Read()

  DIM sLine AS String

  READ #LAST, sLine, -256

  Content = Content & sLine
  PRINT sLine;

END

Si vous voulez savoir combien d'octets vous pouvez lire dans un gestionnaire d'évènements Process_Read, utilisez la fonction Lof.

Comme les arguments sont envoyés à l'interpréteur, vous devez les mettre entre guillemets, comme si vous tapiez une commande directement dans l'interpréteur.

SHELL "perl -e 'print while <>;'" FOR READ WRITE

Vous pouvez aussi utiliser la méthode Quote.Shell pour créer une chaîne entre guillemets qui ne sera pas modifiée par le Shell.

Contrairement à l'interpréteur de commande VB, qui retourne un ID de processus et oblige le programmeur à appeler des API pour contrôler le processus, la fonction Shell de Gambas retourne optionnellement un objet Process (si utilisé comme une affectation a une variable déclarée comme Process). Il peut être utilisé pour tuer directement ou contrôler le processus généré. De plus, le processus peut être lancé de façon synchrone ou asynchrone, à la différence de son équivalent VB.

Voir aussi

Gestion des processus, Process, Lof, Quote.Shell, Shell$, Différences entre Shell et Exec