KSH boucle for et paramètres

Résolu
Bonjour

j'ai un fichier . KSH qui admait jusqu'à 4 paramètres.
Mais j'ai 4 case absolument identique ce qui me donne un code très lourd
Ne pourrais je pas raccourcir mon code avec une boucle for?
Merci d'avance a tous ceux qui me répondront
Voici le code initial sur lequel je travail.

param1=$1
param2=$2
param3=$3
param4=$4

p1=$(echo $param1 | cut -f1 -d"=")
p2=$(echo $param2 | cut -f1 -d"=")
p3=$(echo $param3 | cut -f1 -d"=")
p4=$(echo $param4 | cut -f1 -d"=")

case $p1 in
CB) basicat=$(echo $param1 | cut -f2 -d"=");;
CodeBasicat) basicat=$(echo $param1 | cut -f2 -d"=");;
code) basicat=$(echo $param1 | cut -f2 -d"=");;
code_appli) basicat=$(echo $param1 | cut -f2 -d"=");;
email) mail=$(echo $param1 | cut -f2 -d"=");;
e-mail) mail=$(echo $param1 | cut -f2 -d"=");;
mail) mail=$(echo $param1 | cut -f2 -d"=");;
em) mail=$(echo $param1 | cut -f2 -d"=");;
TypServ) serv=$(echo $param1 | cut -f2 -d"=");;
TypeServeur) serv=$(echo $param1 | cut -f2 -d"=");;
Type_de_Serveur) serv=$(echo $param1 | cut -f2 -d"=");;
TypedeServeur) serv=$(echo $param1 | cut -f2 -d"=");;
TS) serv=$(echo $param1 | cut -f2 -d"=");;
typeserveur) serv=$(echo $param1 | cut -f2 -d"=");;
typserv) serv=$(echo $param1 | cut -f2 -d"=");;
type_de_serveur) serv=$(echo $param1 | cut -f2 -d"=");;
typedeserveur) serv=$(echo $param1 | cut -f2 -d"=");;
ts) serv=$(echo $param1 | cut -f2 -d"=");;
TypTach) tach=$(echo $param1 | cut -f2 -d"=");;
TypeTache) tach=$(echo $param1 | cut -f2 -d"=");;
Type_de_Tache) tach=$(echo $param1 | cut -f2 -d"=");;
TypedeTache) tach=$(echo $param1 | cut -f2 -d"=");;
TT) tach=$(echo $param1 | cut -f2 -d"=");;
typtach) tach=$(echo $param1 | cut -f2 -d"=");;
typetache) tach=$(echo $param1 | cut -f2 -d"=");;
type_de_tache) tach=$(echo $param1 | cut -f2 -d"=");;
typedetache) tach=$(echo $param1 | cut -f2 -d"=");;
tt) tach=$(echo $param1 | cut -f2 -d"=")
esac

case $p2 in
CB) basicat=$(echo $param2 | cut -f2 -d"=");;
CodeBasicat) basicat=$(echo $param2 | cut -f2 -d"=");;
code) basicat=$(echo $param2 | cut -f2 -d"=");;
code_appli) basicat=$(echo $param2 | cut -f2 -d"=");;
email) mail=$(echo $param2 | cut -f2 -d"=");;
e-mail) mail=$(echo $param2 | cut -f2 -d"=");;
mail) mail=$(echo $param2 | cut -f2 -d"=");;
em) mail=$(echo $param2 | cut -f2 -d"=");;
TypServ) serv=$(echo $param2 | cut -f2 -d"=");;
TypeServeur) serv=$(echo $param2 | cut -f2 -d"=");;
Type_de_Serveur) serv=$(echo $param2 | cut -f2 -d"=");;
TypedeServeur) serv=$(echo $param2 | cut -f2 -d"=");;
TS) serv=$(echo $param2 | cut -f2 -d"=");;
typeserveur) serv=$(echo $param2 | cut -f2 -d"=");;
typserv) serv=$(echo $param2 | cut -f2 -d"=");;
type_de_serveur) serv=$(echo $param2 | cut -f2 -d"=");;
typedeserveur) serv=$(echo $param2 | cut -f2 -d"=");;
ts) serv=$(echo $param2 | cut -f2 -d"=");;
TypTach) tach=$(echo $param2 | cut -f2 -d"=");;
TypeTache) tach=$(echo $param2 | cut -f2 -d"=");;
Type_de_Tache) tach=$(echo $param2 | cut -f2 -d"=");;
TypedeTache) tach=$(echo $param2 | cut -f2 -d"=");;
TT) tach=$(echo $param2 | cut -f2 -d"=");;
typtach) tach=$(echo $param2 | cut -f2 -d"=");;
typetache) tach=$(echo $param2 | cut -f2 -d"=");;
type_de_tache) tach=$(echo $param2 | cut -f2 -d"=");;
typedetache) tach=$(echo $param2 | cut -f2 -d"=");;
tt) tach=$(echo $param2 | cut -f2 -d"=")
esac

case $p3 in
CB) basicat=$(echo $param3 | cut -f2 -d"=");;
CodeBasicat) basicat=$(echo $param3 | cut -f2 -d"=");;
code) basicat=$(echo $param3 | cut -f2 -d"=");;
code_appli) basicat=$(echo $param3 | cut -f2 -d"=");;
email) mail=$(echo $param3 | cut -f2 -d"=");;
e-mail) mail=$(echo $param3 | cut -f2 -d"=");;
mail) mail=$(echo $param3 | cut -f2 -d"=");;
em) mail=$(echo $param3 | cut -f2 -d"=");;
TypServ) serv=$(echo $param3 | cut -f2 -d"=");;
TypeServeur) serv=$(echo $param3 | cut -f2 -d"=");;
Type_de_Serveur) serv=$(echo $param3 | cut -f2 -d"=");;
TypedeServeur) serv=$(echo $param3 | cut -f2 -d"=");;
TS) serv=$(echo $param3 | cut -f2 -d"=");;
typeserveur) serv=$(echo $param3 | cut -f2 -d"=");;
typserv) serv=$(echo $param3 | cut -f2 -d"=");;
type_de_serveur) serv=$(echo $param3 | cut -f2 -d"=");;
typedeserveur) serv=$(echo $param3 | cut -f2 -d"=");;
ts) serv=$(echo $param3 | cut -f2 -d"=");;
TypTach) tach=$(echo $param3 | cut -f2 -d"=");;
TypeTache) tach=$(echo $param3 | cut -f2 -d"=");;
Type_de_Tache) tach=$(echo $param3 | cut -f2 -d"=");;
TypedeTache) tach=$(echo $param3 | cut -f2 -d"=");;
TT) tach=$(echo $param3 | cut -f2 -d"=");;
typtach) tach=$(echo $param3 | cut -f2 -d"=");;
typetache) tach=$(echo $param3 | cut -f2 -d"=");;
type_de_tache) tach=$(echo $param3 | cut -f2 -d"=");;
typedetache) tach=$(echo $param3 | cut -f2 -d"=");;
tt) tach=$(echo $param3 | cut -f2 -d"=")
esac

case $p4 in
CB) basicat=$(echo $param4 | cut -f2 -d"=");;
CodeBasicat) basicat=$(echo $param4 | cut -f2 -d"=");;
code) basicat=$(echo $param4 | cut -f2 -d"=");;
code_appli) basicat=$(echo $param4 | cut -f2 -d"=");;
email) mail=$(echo $param4 | cut -f2 -d"=");;
e-mail) mail=$(echo $param4 | cut -f2 -d"=");;
mail) mail=$(echo $param4 | cut -f2 -d"=");;
em) mail=$(echo $param4 | cut -f2 -d"=");;
TypServ) serv=$(echo $param4 | cut -f2 -d"=");;
TypeServeur) serv=$(echo $param4 | cut -f2 -d"=");;
Type_de_Serveur) serv=$(echo $param4 | cut -f2 -d"=");;
TypedeServeur) serv=$(echo $param4 | cut -f2 -d"=");;
TS) serv=$(echo $param4 | cut -f2 -d"=");;
typeserveur) serv=$(echo $param4 | cut -f2 -d"=");;
typserv) serv=$(echo $param4 | cut -f2 -d"=");;
type_de_serveur) serv=$(echo $param4 | cut -f2 -d"=");;
typedeserveur) serv=$(echo $param4 | cut -f2 -d"=");;
ts) serv=$(echo $param4 | cut -f2 -d"=");;
TypTach) tach=$(echo $param4 | cut -f2 -d"=");;
TypeTache) tach=$(echo $param4 | cut -f2 -d"=");;
Type_de_Tache) tach=$(echo $param4 | cut -f2 -d"=");;
TypedeTache) tach=$(echo $param4 | cut -f2 -d"=");;
TT) tach=$(echo $param4 | cut -f2 -d"=");;
typtach) tach=$(echo $param4 | cut -f2 -d"=");;
typetache) tach=$(echo $param4 | cut -f2 -d"=");;
type_de_tache) tach=$(echo $param4 | cut -f2 -d"=");;
typedetache) tach=$(echo $param4 | cut -f2 -d"=");;
tt) tach=$(echo $param4 | cut -f2 -d"=")
esac
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. Modérateur
    bonjour,

    cherche autour de :
    for i in $1 $2 $3 $4
    do
        p=$(echo $i | cut -f1 -d"=")
        case $p in
           CB) basicat=$(echo $i | cut -f2 -d"=");; 
           ...
           ...
        esac
    done
    

    cdt
    1. Modérateur
      Salut,

      Dans le même esprit que "jee pee" :
      $ cat foo.ksh
      
      #! /bin/ksh
      
      for param in "$@"
      do
      case $param in
      1)      echo "Le paramètre $param contient le chiffre 1"
              ;;
      2)      echo "Le paramètre $param contient le chiffre 2"
              ;;
      5)      echo "Le paramètre $param contient le chiffre 5"
              ;;
      *)      echo "Le paramètre $param ne fait pas parti de la liste..."
              ;;
      esac
      done
      
      $ ./foo.ksh 3 5 2 7 1 0
      
      Le paramètre 3 ne fait pas parti de la liste...
      Le paramètre 5 contient le chiffre 5
      Le paramètre 2 contient le chiffre 2
      Le paramètre 7 ne fait pas parti de la liste...
      Le paramètre 1 contient le chiffre 1
      Le paramètre 0 ne fait pas parti de la liste...
      
      $ 
      ;-))
      1. Merci beaucoup a vous 2
        cette solution fonctionne très bien

        for i in $1 $2 $3 $4
        do
        p=$(echo $i | cut -f1 -d"=")
        case $p in
        CB) basicat=$(echo $i | cut -f2 -d"=");;
        ...
        ...
        esac
        done

        C'est la deuxième fois que je viens sur le forum de ccm est je suis trétré content de l'efficacité
        merci bcp. bye
        1. Modérateur
          En plus, tu peux simplifier les cases :
           CB) basicat=$(echo $param1 | cut -f2 -d"=");;
           CodeBasicat) basicat=$(echo $param1 | cut -f2 -d"=");;
           code) basicat=$(echo $param1 | cut -f2 -d"=");; 
          
          c'est plus court en mettant
          
           CB|CodeBasicat|code) basicat=$(echo $param1 | cut -f2 -d"=");;
          
          1. Modérateur
            Et encore plus court si tu te sers de l'expansion des paramètres :
            B|CodeBasicat|code) basicat=${param1#*=}
            et aussi :
            p1=${param1%=*}
            ;-))