Retourner une valeur avec les shell-script bashs
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Retourner une valeur avec les shell-script bashs



  1. #1
    invite48ca7510

    Retourner une valeur avec les shell-script bashs


    ------

    Bonsoir à tous !

    Je souhaite écrire un script (sous Linux) qui prend en argument 3 chaînes et qui :
    • retourne 0 si les 3 chaînes sont égales
    • retourne 1,2 ou 3 si la chaîne différente des autres est à la 1ère, 2ème ou 3ème position
    • retourne 4 si les trois chaînes sont différentes
    • retourne 5 si le nombre de paramètres est incorrect

    Voici mon code :
    Code:
    #!/bin/sh
    
    if test $# != 3
    #on test s'il y a bien 3 arguments avec $# 
    then exit 5
    
    elif test $1 = $2 -a $2 = $3
    then exit 0
    
    elif test $2 = $3
    then exit 1
    
    elif test $1 = $3
    then exit 2
    
    elif test $1 = $2
    then exit 3
    
    elif test $1 != $2 -a $2 != $3
    then exit 4
    
    fi
    Lorsque j'éxécute, tout à l'air de bien se passer. Cependant, je n'obtiens pas la valeur de retour (que je mette exit ou return).
    Lorsque je tape $? , j'obtiens la bonne valeur de retour, mais avec un message : commande introuvable.

    Je souhaiterais que la valeur soit retournée automatiquement (pas besoin de taper quelque chose pour obtenir le code 0,1,...,5).

    Voici un screen pour mieux illustrer mon problème :
    Nom : bug_linux.jpg
Affichages : 789
Taille : 11,8 Ko

    Merci d'avance pour votre aide.

    Lechero.

    -----

  2. #2
    invite7a96054d

    Re : Retourner une valeur avec les shell-script bashs

    Hello,

    Ton script shell retourne la valeur mais ne l'affiche pas. Si tu veux juste que ton script l'affiche (mais ne la retourne pas) alors remplace les exit par des echo.
    Quant au comportement «commande introuvable», cela s'explique facilement. $? est une variable shell qui contient la valeur de retour de la dernière commande. Dès que ton shell voit cette variable il la substitue avec sa valeur. Donc effectivement ton script retourne 3, la variable $? vaudra 3, après substitution c'est comme si tu avais tapé 3 suivi de entrée : le shell cherche une commande nommée 3 (qu'il ne trouve pas, d'où le message d'erreur).
    Si tu veux afficher la valeur d'une variable il faut passer par un echo (ou similaire) : echo $? et là tu auras le comportement que tu souhaites.

  3. #3
    invite48ca7510

    Re : Retourner une valeur avec les shell-script bashs

    Bonjour,

    très bien, merci pour votre réponse ! Je vais opter pour le echo directement dans le script, à la place des exit.

    Bon dimanche.

    Cordialement,
    Dernière modification par Jack ; 11/12/2014 à 22h51.

Discussions similaires

  1. script shell
    Par invite97b21456 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 22/12/2010, 15h22
  2. Programmation script shell ksh unix
    Par invite3ac0dbd7 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 10/10/2009, 17h10
  3. shell ou script linux
    Par invited9f05e20 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 26/03/2009, 08h44
  4. Ecriture d'un script shell
    Par invite1d93df33 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 28/09/2008, 21h44
  5. script shell texte en html
    Par invite28bcb7c4 dans le forum Logiciel - Software - Open Source
    Réponses: 15
    Dernier message: 29/10/2005, 20h24