Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.1.0 - Français


host

exécute une commande Windows, Linux, ou MacOS

unix

alias de host()

Séquence d'appel

status = host(commands)

status = unix(commands)

Arguments

commands

texte unique constitué d'instructions à soumettre à l'interpréteur de commandes du système d'exploitation (Windows, Linux, ou MacOS) pour exécution.

Sous Windows, commands doit avoir au maximum 8191 caractères (après expansion des éventuelles variables d'environnement incluses).

status

un entier: -1 si la commande ne peut pas être exécutée (par exemple pour mémoire insuffisante). Si la commande est exécutée (avec succès ou non) : code entier de sortie retourné par l'interpréteur de commande.

Sous Windows, 0 est le plus souvent retourné en cas d'exécution sans erreur.

Description

host(…)

  • créée une session de l'interpréteur de commande du système d'exploitation (OS) (sh avec Linux, cmd.exe avec Windows, etc..).
  • envoie la commands à l'interpréteur,
  • attend que l'interpréteur de l'OS l'exécute,
  • reçoit tous les messages normalement affichés dans le terminal de l'interpréteur,
  • et ferme la session de l'interpréteur.

La session de l'interpréteur de commandes créée est un clône de la session OS depuis laquelle Scilab a été lancé. En conséquence, son contexte est le suivant :
  • Son dossier initial de travail (CWD) est le dossier de travail de la session Scilab lors de l'appel à host(…).
  • Ses variables d'environnement initiales sont identiques (noms et valeurs) à celles du terminal OS dans lequel la session Scilab fonctionne (consolebox), au moment où host() est appelée. Elles peuvent être modifiées avec setenv avant l'appel à host().
  • Toute modification dans la session host() du dossier de travail et/ou des variables d'environnement n'a aucun effet ni sur le dossier de travail de la session Scilab, ni sur les variables d'environnement du terminal OS dans lequel la session Scilab fonctionne.

Les messages de résultat et/ou d'erreur issus de l'interpréteur et normalement affichés dans son propre terminal sont détournés et affichés dans le terminal de lancement de Scilab (pour MS Windows, dans la consolebox).

host() doit être préférée à son alias unix(), dont le nom prête à confusion.
host cls; efface le contenu de la consolebox (MS Windows).

Exemples

Pour les utilisateurs de Windows :

Dossier de travail dans les sessions respectives de Scilab / de l'interpréteur DOS :

pwd                 // Dossier de travail courant dans la session Scilab
if getos()=="Windows"
    host cls;
    consolebox on;
    host cd;        // Dossier de travail initial dans la session de l'interpréteur de l'OS
else
    host pwd;
end
// Les chemins affichés dans le terminal DOS/consolebox et dans la console Scilab sont les mêmes.

Affichage dans le terminal DOS de Scilab (consolebox) :

host cls;
host "echo Scilab host() function";
host "echo A & echo BC";
host("echo DEF"+ascii(10)+"echo G");
host("echo Dossier de travail: & cd");
host dira;   // => erreur : commande inconnue
Scilab host() function
A
BC
DEF
Dossier de travail:
C:\Scilab\tests
'dira' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

Variables d'environnement du DOS, respectivement dans les sessions Scilab et host() :

setenv TEST AAAA;
getenv NUMBER_OF_PROCESSORS
host cls;
host "echo %TEST%";
host "echo %USERNAME% %NUMBER_OF_PROCESSORS%";
host "set TEST=BBBB";
getenv TEST
Affichage : les lignes ci-dessous préfixées avec ":" sont affichées dans la consolebox (DOS). Les autres sont affichées dans la console Scilab :
--> setenv TEST AAAA;
--> getenv NUMBER_OF_PROCESSORS
 ans  =
 2

--> host cls;
--> host "echo %TEST%";
: AAAA

--> host "echo %USERNAME% %NUMBER_OF_PROCESSORS%";
: Samuel 2

--> host "set TEST=BBBB"  // correctement exécuté :
 ans  =
   0.

--> getenv TEST
 ans  =
 AAAA
Exemples d'application :

Fonction openURL() portable basée sur host():

function openURL(url)
    if getos()=="Windows"
        winopen(url)
    elseif getos()=="Linux"
        host("xdg-open """+url+"""")
    elseif getos()=="Darwin"         // Mac OS
        host("open """+url+"""")
    else
        warning("openURL: OS inconnu")
    end
endfunction

// Utilisation :
openURL("https://help.scilab.org/docs/current/en_US/host.html")

Voir aussi

  • consolebox — affiche ou cache le terminal Windows de lancement de Scilab
  • getos — donne le nom et la version du système d'exploitation
  • setenv — fixe la valeur d'une variable d'environnement
  • unix_g — exécute des instructions Windows, Linux ou MacOS : résultats dans des variables
  • unix_s — exécute des instructions Windows, Linux ou MacOS : résultats masqués (mode Silencieux)
  • unix_w — exécute des instructions Windows, Linux ou MacOS : résultats dans la console Scilab
  • unix_x — exécute des instructions Windows, Linux ou MacOS : résultats dans une fenêtre d'information
  • dos — executes some DOS instructions (Windows only)
  • powershell — executes a command with the Windows powershell interpreter (Windows only)
  • Liste de codes de sortie des commandes MS Windows
Report an issue
<< getpid OS_commands scilab >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jun 17 17:52:28 CEST 2024