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.
- 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 :
|
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
--> 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 | setenv >> |