[Unix] Probleme avec

Résolu
Bonjour,

J'ai créé un shell qui doit obligatoirement renvoyer un code de sortie (0 ou 1). Il s'execute parfaitement mais le problème est qu'au moment du exit 0, il l'interprète comme un logout et je suis ejecté du système...

Quelqu'un pourrait-il éclairer ma lanterne ?

Merci

Trez
Configuration: Sun OS 5.9

2 réponses

  1. Modérateur
    Salut,

    Comment exécutes-tu ton script ?
    Emploies-tu la commande "exec" ?
    Ou encore "sources-tu" ton script ("source ton_script" ou ". ton_script") ?
    1. Hello jipicy,

      J'execute mon script de la manière suivante : ". mon_script.sh"
      De cette facon, il prend en compte toutes les variables d'environnement que j'ai stocké dans un fichier (appelé lui meme par mon ".profile").

      Cdlt,

      Trez
    2. Modérateur
      @TrezegRe-

      J'execute mon script de la manière suivante : ". mon_script.sh"
      Donc tu "source" ton script et c'est pour ça qu'il t'éjecte lors de l'appel de "exit 0".

      Je pense que tu devrais dans ce cas là utiliser des fonctions, mais je ne suis pas sûr que ça résolve ton problème...

      Je ne suis pas chez moi là, mais dès que je rentre je jetterai un oeil pour voir si il y a moyen de contourner cette déconnexion.

      ;-))
    3. Modérateur
      @TrezegBon effectivement, je pense que tu devrais passer par des fonctions et l'emploi de "return" à la place d'"exit"...
      #! /bin/bash
      
      ma_fonction ()
      {
      if ...
      then ...
      return 0
      else ...
      return 1
      fi
      }
      
      ma_fonction
      code_retour=$?
      echo $code_retour
      ...
      Et point d'"exit" non plus en fin de script, sous peine de te voir à nouveau éjecter du shell.

      ;-))
    4. @jipicyBonjour jipicy,

      Et n'est-il pas possible de mettre un return 0 ou 1 directement à la fin de mes shells ? Je demande cela car j'ai remarqué que meme sans exit, je parvenais à sortir du shell une fois que celui-ci se terminait. Par contre je ne pouvais pas gerer de code de sortie.

      Cdlt,

      Trez
  2. Hello,
    J'ai pu faire le test en mettant directement le return 0 ou 1 à la sortie de mes shells. Et pour le moment ca marche ;)

    Merci pour tout

    Trez