Un case dans un case

Bonjour,

je possède 2 imprimantes avec plusieurs files d'impressions sur chacune d'elle,

je souhaiterais séparer à l'aide d'un script, les files d'impression pour chaque imprimante

pour résumer :
- en premier lieu, je propose donc un choix d'imprimante ( X700, DC260 ou AUTRES )
- dans un second temps, une fois une imprimante choisie (DC260 par exemple), j'aimerais proposer une liste de files d'impression pour celle-ci,

Choisir une imprimante
1) X700
2) DC260
3) AUTRES
4) quitter
? 2

quelle file DC260 ? :
1) DXCotre
2) DXCotreRectoVerso
3) DSpXCotre
4) DSpXCotreRectoVerso
5) DEnteteCoupon
6) retour

j'essaie de faire une "sorte" de case dans un case en fait,

j'aimerais avoir la structure d'un case à l'intérieur d'un autre case,

voici ce que j'ai commencé par faire :
ex:


printf "\nChoisir une imprimante : \n\n"
select CHOIXIMP in \
 "X700" "DC260" "Autres" Quitter
  do
   case $CHOIXIMP in
         "X700")               export Batch_Que=CHOIXX700;break;;
         "DC260")              export Batch_Que=CHOIXDC260;break;;
         "Autres")             export Batch_Que=CHOIXAUTRES;break;;
         Quitter)              export Batch_Que="";clear;break;;
   esac
  done

CHOIXX700 ()
{
    printf "\nChoisir une file d'impression X700: \n\n"
    select CHOIXX700 in \
     "$XCotre" "$XCotreRectoVerso" "$SpXCotre" "$SpXCotreRectoVerso" "$EnteteCoupon" "$EnteteRecto" "$EnteteRectoVerso" "$Fmp" "$Mixte" "$Recto" "$RectoVe
rso" "$SpEnteteCoupon" "$SpMixte" "$SpEnteteRecto" "$SpEnteteRectoVerso" "$SpRecto" "$SpRectoVerso" "$Standard" \
     do
      case $CHOIXX700 in
                "$XCotre")                export Batch_Que=XCotre;break;;
                "$XCotreRectoVerso")      export Batch_Que=XCotreRectoVerso;break;;
                "$SpXCotre")              export Batch_Que=SpXCotre;break;;
                "$SpXCotreRectoVerso")    export Batch_Que=SpXCotreRectoVerso;break;;
                "$EnteteCoupon")          export Batch_Que=EnteteCoupon;break;;
                "$EnteteRecto")           export Batch_Que=EnteteRecto;break;;
                "$EnteteRectoVerso")      export Batch_Que=EnteteRectoVerso;break;;
                "$Fmp")                   export Batch_Que=Fmp;break;;
                "$Mixte")                 export Batch_Que=Mixte;break;;
                "$Recto")                 export Batch_Que=Recto;break;;
                "$RectoVerso")            export Batch_Que=RectoVerso;break;;
                "$SpEnteteCoupon")        export Batch_Que=SpEnteteCoupon;break;;
                "$SpEnteteRecto")         export Batch_Que=SpEnteteRecto;break;;
                "$SpEnteteRectoVerso")    export Batch_Que=SpEnteteRectoVerso;break;;
                "$SpMixte")               export Batch_Que=SpMixte;break;;
                "$SpRecto")               export Batch_Que=SpRecto;break;;
                "$SpRectoVerso")          export Batch_Que=SpRectoVerso;break;;
                "$Standard")              export Batch_Que=Standard;break;;
      esac
     done
}

CHOIXXDC260 ()
{
    printf "\nChoisir une file d'impression DC260: \n\n"
    select CHOIXDC260 in \
     "$DXCotre" "$DXCotreRectoVerso" "$DSpXCotre" "$DSpXCotreRectoVerso" "$DEnteteCoupon" \
     do
      case $CHOIXDC260 in
                "$DXCotre")               export Batch_Que=DXCotre;break;;
                "$DXCotreRectoVerso")     export Batch_Que=DXCotreRectoVerso;break;;
                "$DSpXCotre")             export Batch_Que=DSpXCotre;break;;
                "$DSpXCotreRectoVerso")   export Batch_Que=DSpXCotreRectoVerso;break;;
                "$DEnteteCoupon")         export Batch_Que=DEnteteCoupon;break;;
      esac
    done
}


--

merci par avance

++
Poulpoul
Configuration: AIX 5.3
ksh

4 réponses

  1. ah merci beaucoup Jipicy
    en effet, cela fonctionne un peu mieux déjà comme çà

    j'aurais peut être d'autres questions ultérieurement
    1. Modérateur
      Y'a un "\" en trop dans chacune de tes fonctions à la fin de la ligne suivant le "select" et précédant le "do" :

      Mauvais :

      select AAAA in \
      WWWW YYYY ZZZ \   <== Pas bon
      do
      ...
      ...


      Bon :

      select AAAA in \
      WWWW YYYY ZZZ
      do
      ...
      ...

      1. Re,

        quoique je fasse, il est toujours indiqué quant au premier case:

        `case' imprévu

        et là je sèche ...
        1. Modérateur
          Salut,

          Et où est le problème ? (A part que tes fonctions doivent être déclarées avant le 1er "case" pour pouvoir être appelées depuis ce "case" ;-( )