Rechercher : dans
Par :

Execution Shell script dans fenetre xterm

Dernière réponse le 5 déc 2008 à 10:54:57 nonoEW, le 2 déc 2008 à 17:24:06 
 Signaler ce message aux modérateurs

Bonjour,

J'ai une petite question sur une routine de programmation shell :
j'ai un programme du style

function1()
{
blabla
}

function2()
{
blibli
}

...
corps de mon shell script
...
exit

ça fonctionne très bien mais je voudrais qu'à l'éxécution de mon programme, les commandes soient exécutées dans une fenetre xterm.
J'ai donc fait un programme spécial pour intégrer cette fonctionalité:
#! /bin/sh
# This script opens a terminal and execute trace.sh
xterm -T "Trace program -- Press Control-C to quit" -bg "black" -fg "white" -e "./trace.sh ;
echo -e \"\nPress enter to exit\"
read
exit"

ça marche d'accord mais est il possible de faire cela dans le seul et même programme ?

merci
nono

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Execution Shell script dans fenetre xterm » dans :
Exécuter un script shell Voir Exécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Script au démarrage et à l'arrêt d'Ubuntu VoirFaire exécuter un script au démarrage d'Ubuntu Modifiez le fichier /etc/rc.local et ajoutez vos commandes. Le script doit toujours se terminer par un exit 0 Faire exécuter un script au redémarrage Placez votre script dans /etc/rc0.d et rendez...
WSH - Objet WshShell VoirWshShell L'objet WshShell contient des informations sur l'environnement d'exécution, ainsi que des méthodes permettant de gérer l'exécution locale d'applications, de manipuler la base de registre, d'accéder aux ressources systèmes (base de...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

nonoEW, le 4 déc 2008 à 14:39:52

Bonjour,

Est ce que quelqu'un à un avis sur le sujet ?

Merci
Nono

Répondre à nonoEW

2

dubcek, le 4 déc 2008 à 14:56:02
  • +1

Tu peux mettre ton script entre les " après le -e

Répondre à dubcek

3

nonoEW, le 4 déc 2008 à 15:29:24

Bjr,

J'y ai bien pensé mais le problème c'est que c'est un peu galère de faire ça car il faut protéger tous les caractères spéciaux par des \ (les guillemets par exemple).

Sinon, j'ai essayer de mettre le corps de une fonction main() par exemple et de mettre :

xterm -T "Trace program -- Press Control-C to quit" -bg "black" -fg "white" -e "main ;
echo -e \"\nPress enter to exit\"
read
exit"

Mais ça marche pô, ce n'est pas possible de faire comme ça ?

Nono

Répondre à nonoEW

4

dubcek, le 4 déc 2008 à 16:05:38

Ou dans trace.sh

if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx"

le reste du script

et exécuter
./trace.sh

Répondre à dubcek

5

nonoEW, le 4 déc 2008 à 16:44:26

Peux tu être un peu plus clair stp car je n'arrive pas à le faire fonctionner.
Le fi se situe où ?
que signifie les xxx après le ./trace ?

Nono

Répondre à nonoEW

6

dubcek, le 4 déc 2008 à 16:48:59

Oui j'ai oublié le fi
if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx" ; fi

le script trace.sh appellé sans paramètre démarre un xterm
qui démarre le script avec un paramètre qui va donc ne pas exécuter le xterm mais le reste du script

Répondre à dubcek

7

nonoEW, le 4 déc 2008 à 17:17:15

Oui mais je veux que le reste de mon script s'exécute dans le xterm lancé.
Et là, ce n'est pas le cas, la fenêtre xterm se ferme au début de l'exécution de mon script

Nono

Répondre à nonoEW

8

dubcek, le 4 déc 2008 à 17:20:09

Et avec
if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx ; $SHELL" ; fi

Répondre à dubcek

9

nonoEW, le 4 déc 2008 à 17:52:10

Oui, mais le $SHELL me remet un prompt dans ma fenêtre xterm.
J'ai mis à la place:
if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx ; read ; exit" ; fi
La ça marche mais une fois mon programme terminé, il recommence une deuxième fois ! Je ne comprend pas pourquoi ? T'as une idée

PS: Tu ne ma pas répondu au sujet des xxx, ça sert à quoi ???

Nono

Répondre à nonoEW

11

dubcek, le 5 déc 2008 à 09:49:16

Le xxx est juste un paramètre bidon qui permet de faire le test if [ $# -eq 0 ]
sans xxx $# = 0, avec xxx $# =1

Répondre à dubcek

10

nonoEW, le 4 déc 2008 à 18:17:25

En mettant le code dans le else, je n'ai plus le problème mais j'ai qd même du mal à capter pourquoi
Nono

Répondre à nonoEW

12

dubcek, le 5 déc 2008 à 10:13:41
  • +1

Exit ne doit pas être dans le xterm

if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx ; read" ; exit ; fi

Répondre à dubcek

13

nonoEW, le 5 déc 2008 à 10:27:45

Merci beaucoup, pour ton aide!

Alors je récapitule le fonctionnement, au début on exécute trace.sh sans paramètre, ce qui lance la fenêtre xterm avec trace.sh lancer avec le paramètre bidon "xxx".
Trace.sh étant lancé avec un paramètre, le code étant placé dans le else, l'éxécution ne se fait qu'une seule fois conformément à ce que je voulais.

C nickel tout ça
Merci !!
Nono

Répondre à nonoEW

14

dubcek, le 5 déc 2008 à 10:31:44
  • +1

Tu as tout compris.
avec le exit comme indiqué au message 12, plus besoin du else

Répondre à dubcek

15

 nonoEW, le 5 déc 2008 à 10:54:57

Encore mieux, merci beaucoup, je pense que je peux clore la discussion
@+
Nono

Répondre à nonoEW