Usage commande Dialog et Interface/menu

naruto93sisi Messages postés 3 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,



J'apprends à écrire des scripts en shell et j'ai quelques questions.
J'essaye de réaliser un menu avec la commande dialog, mais j'éprouve quelques difficultés à l'intégrer à mon menu...

https://pastebin.com/bG0CskZK

Premier problème: au premier elif (choix 2) then, il me trouve une erreur de syntax que je ne parviens pas à identifier...

Ensuite, les dialog ne fonctionnent qu'au début, mais plus à partir de celui au début de ma boucle while, ainsi que ceux dans les if elif...

Quelqu'un pourrait-il m'éclairer ?

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Il y avait quelques erreurs de syntaxes, notamment avec les tests. Il faut des espaces après le crochet ouvrant et avant le crochet fermant, ainsi qu'autour du signe "égal" :

    Bon : [ "$var" = A ]
    Mauvais ["$var"=A] ou [ "$var"=A ] ou ["$var" = A]

    A la fin des commandes "dialog" il faut un retour à la ligne (ou un point virgule (;) avant la prochaine commande. Les anti-slashs ne servent que pour une meilleure visibilité du code quand une ligne de commande devient trop longue (c'est le cas pour dialog).

    Essaie comme ça :

    #!/bin/sh
    #Affichage "Graphique"
    
    tmp=/tmp/choix$$
    dialog  --backtitle "afficher la date plus tard" \
            --title "TITRE" \
            --msgbox "Texte Intro\nblablabla\nblablab\n\n Press <Enter> to continue..." 10 45 
    secu1=1
    while [ $secu1 = 1 ]
    do
    dialog --menu "menu" 20 20 20 1 Menu1 2 Menu2 3 Menu3 4 MenuPrincpal 5 Quitter 2>$tmp 
            choix=$(cat $tmp);
    
            if [ $choix = 1 ]
            then
                    echo $choix
                    dialog --msgbox "Catégorie Menu 1" 10 45 \
                           --clear 
            elif [ $choix = 2 ]
            then
                    dialog --msgbox "Catégorie Menu 2" 10 45 \
                           --clear 
            elif [ $choix = 3 ]
            then
                    dialog --msgbox "Catégorie Menu 3" 10 45 \
                           --clear 
            elif [ $choix = 4 ]
            then
                    dialog --msgbox "Revenir au menu principal " 10 45 \
                           --clear 
                    secu1=0
            elif [ $choix = 5 ]
            then
                    dialog --msgbox "Quitter le programme" 10 45 \
                           --clear 
             else
               echo "not a choice"
            fi
    done


    Malgré le fait que ça marche il y a encore quelques petites erreurs de syntaxe...
    0
  2. naruto93sisi Messages postés 3 Statut Membre
     
    Merci beaucoup pour cette réponse si rapide.
    Je vais voir à régler cela...
    0
  3. naruto93sisi Messages postés 3 Statut Membre
     
    Pourrais tu expliciter le fait que dialog ait besoin d'un retour de ligne... Où iraient les ; ?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Non ce n'est pas dialog qui a besoin d'un retour à la ligne, c'est la syntaxe entre 2 commandes qui l'impose pour séparer 2 commandes (ou un point virgule).
      0