IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[KSH] Rendre une option obligatoire


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut [KSH] Rendre une option obligatoire
    Bonjour,
    J'ecris un script dans lequel je gère plusieurs options en arguments
    Dans ce script je gère les options h,a,e,m
    Je souhaiterai que si l'option -a soit invoqué vérifier que le -e l'est obligatoirement (et inversement)
    Bref lever une erreur si -a ou -e sont invoqués seul.

    Je souhaiterait aussi que l'on ne puisse lancé l'option -a et -m dans la même commande
    Bref lever une erreur si -a ou -m sont invoqués dans la meme commande


    Si vous avez des idées sur comment faire, je vous remercie d'avance.
    Voici la partie ou je traite ces arguments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    while getopts :ha:e:m argument
     
    do
     
      case $argument in
     
        h)  usage
            exit 0;;
        a)  fichier="$OPTARG"
            auto $fichier;;
        e) export ENV="$OPTARG" ;;
        m)  manuel ;;
        : )  echo "$0: $OPTARG argument manquants"
            exit 2 ;;
        \?)  echo "\nargument(s) invalide(s)\n"; usage
             exit 2 ;;
      esac
    done
    shift $OPTIND-1

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par oldhag Voir le message
    Bonjour,
    J'ecris un script dans lequel je gère plusieurs options en arguments
    Dans ce script je gère les options h,a,e,m
    Je souhaiterai que si l'option -a soit invoqué vérifier que le -e l'est obligatoirement (et inversement)
    Bref lever une erreur si -a ou -e sont invoqués seul.

    Je souhaiterait aussi que l'on ne puisse lancé l'option -a et -m dans la même commande
    Bref lever une erreur si -a ou -m sont invoqués dans la meme commande


    Si vous avez des idées sur comment faire, je vous remercie d'avance.
    Voici la partie ou je traite ces arguments

    while getopts :ha:e:m argument

    do

    case $argument in

    h) usage
    exit 0;;
    a) fichier="$OPTARG"
    auto $fichier;;
    e) export ENV="$OPTARG" ;;
    m) manuel ;;
    : ) echo "$0: $OPTARG argument manquants"
    exit 2 ;;
    \?) echo "\nargument(s) invalide(s)\n"; usage
    exit 2 ;;
    esac
    done
    shift $OPTIND-1
    initialisez 2 flags à des valeurs tests avant le "case", changez la valeur de chacun d'entre eux dans les cas 'a' et 'e' resp.…
    après le "case" :
    si les 2 flags ont les 2 valeurs tests ou si aucun des 2 n'a la valeur test : c'est OK… sinon vous êtes dans le cas d'erreur…
    en utilisant des valeurs numériques comme cas "test" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    flag_a=0
    flag_e=0
     
    …
    case…
    …
    a) flag_a=1; …
    e) flag_e=1; …
    esac
    …
     
    flag_ae=$((flag_a + flag_e))
    # only 0 and 2 are valid situation, 1 means only one option was selected
    if [ $flag_ae -eq 1 ]
    then
    # ERROR SITUATION
    fi
    dans les cas plus complexes, vous pouvez aussi considérer le résultat à obtenir comme un bitmask…
    (dans ce cas-ci : flag_a=1 et flag_e=2 => les seuls résultats valables seront 0 et 3…)

    (PS: vérifiez avec KSH la syntaxe de l'évaluation des expressions numériques, par habitude j'ai mis celle de bash…)

Discussions similaires

  1. Rendre une option de liste déroulante insélectionnable
    Par Matt59310 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/04/2009, 12h10
  2. rendre une option de menu inutilisable
    Par Biosox dans le forum MFC
    Réponses: 2
    Dernier message: 15/01/2009, 15h55
  3. Rendre une macro obligatoire.
    Par damashi dans le forum VBA Word
    Réponses: 3
    Dernier message: 24/01/2008, 15h57
  4. rendre une saisie obligatoire dans un formulaire
    Par heteroclite dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/09/2006, 23h26
  5. Rendre une option d'un menu non sélectionnable
    Par zoziobibe dans le forum Visual C++
    Réponses: 5
    Dernier message: 28/08/2006, 07h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo