Execution Shell script dans fenetre xterm

Résolu
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

9 réponses

  1. Contributeur
    exit ne doit pas être dans le xterm

    if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx ; read" ; exit ; fi
    1
    1. 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
      0
    2. Contributeur
      @nonoEWtu as tout compris.
      avec le exit comme indiqué au message 12, plus besoin du else
      0
    3. @dubcekEncore mieux, merci beaucoup, je pense que je peux clore la discussion
      @+
      Nono
      0
  2. 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
    0
    1. Contributeur
      et avec
      if [ $# -eq 0 ] ; then xterm -e "./trace.sh xxx ; $SHELL" ; fi
      0
      1. 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
        0
      2. Contributeur
        @nonoEWle xxx est juste un paramètre bidon qui permet de faire le test if [ $# -eq 0 ]
        sans xxx $# = 0, avec xxx $# =1
        0
    2. 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
      0
      1. Contributeur
        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
        0
        1. 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
          0
          1. Contributeur
            ou dans trace.sh

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

            le reste du script

            et exécuter
            ./trace.sh
            0
            1. Contributeur
              tu peux mettre ton script entre les " après le -e
              1
              1. 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
                0
            2. Bonjour,

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

              Merci
              Nono
              0