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
    Et encore plus court si tu te sers de l'expansion des paramètres :
    B|CodeBasicat|code) basicat=${param1#*=}
    et aussi :
    p1=${param1%=*}
    ;-))
    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. 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
          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. 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