Boîtes de dialogue sous bash La commande dialog permet d'utiliser onze boîtes de dialogues différentes dans les shell scripts L'historique de cette commande se révèle assez compliqué puisque son auteur ayant cessé de la supporter, plusieurs versions ont vu le jour. Plus de détails sur © BTS II 2002 [tv]
Sur la distribution Mandrake, vous trouverez le paquetage cdialog qui correspaond à une version de dialog. Pour vérifier sa présence, il suffit de taper dialog pour voir apparaître une aide succinte. Sinon, installer le paquetage. Il existe une version pour Xwindow : Xdialog
2. Test Taper la commande : $ dialog --title "Titre" --msgbox "Hello world" 0 0 Pour obtenir l'aide complète : $ man dialog Des exemples et la documentation sont disponibles dans : /usr/share/doc/cdialog-* /usr/share/doc/Xdialog-*
3. Exemple n°1 #!/bin/bash #TP 1 dialog : Saisie (INPUTBOX) et Affichage (MSGBOX) #Saisie du nom : un nom par défaut est fourni #et la reponse est redirigee vers /tmp/reponse dialog --backtitle "TP1" --title "Test IMPUTBOX" --inputbox "Entrez votre nom :" 0 0 "VAIRA Thierry" 2> /tmp/reponse #Test OK ou CANCEL ? if [ $? = 1 ]; then exit fi #recupere la reponse donc le nom saisie reponse=`cat /tmp/reponse` #ou: reponse=$(cat /tmp/reponse) #affiche le nom saisie dialog --backtitle "TP1" --title "Test MSGBOX" --msgbox "Hello $reponse" 0 0 #efface le fichier temporaire rm -f /tmp/reponse
3. Exemple n°2 #!/bin/bash #TP 2 : test d'un choix utilisateur avec # CHECKLIST et affichage d'un texte avec TEXTBOX #affiche la boite de dialogue de choix dialog --backtitle "TP 2" --title "Test CHECKLIST" --separate-output -- checklist "Selectionner les jours :" LUN Lundi 0 MAR Mardi 0 MER Mercredi 0 JEU Jeudi 0 VEN Vendredi 0 SAM Samedi 0 DIM Dimanche 0 2> /tmp/reponse #Test si OK ou CANCEL ? if [ $? = 1 ]; then exit fi #Affichage avec TEXTBOX du choix utilisateur dialog --backtitle "TP 2" --title "Test TEXTBOX" --textbox /tmp/reponse 0 0 #efface le fichier temporaire rm -f /tmp/reponse
4. Exemple n°1 version Xwindow #!/bin/bash #version Xdialog #TP 1 dialog : Saisie (INPUTBOX) et Affichage (MSGBOX) #Saisie du nom : un nom par défaut est fourni et la reponse est redirigee vers /tmp/reponse Xdialog --backtitle "TP1" --title "Test IMPUTBOX" --inputbox "Entrez votre nom :" 0 0 "VAIRA Thierry" 2> /tmp/reponse #Test OK ou CANCEL ? if [ $? = 1 ]; then exit fi #recupere la reponse donc le nom saisie reponse=`cat /tmp/reponse` #affiche le nom saisie Xdialog --backtitle "TP1" --title "Test MSGBOX" --msgbox "Hello $reponse" 0 0 #efface le fichier temporaire rm -f /tmp/reponse
4. Exemple n°2 version Xwindow #!/bin/bash # version Xdialog # TP 2 : test d'un choix utilisateur avec # CHECKLIST et affichage d'un texte avec TEXTBOX # affiche la boite de dialogue de choix Xdialog --backtitle "TP 2" --title "Test CHECKLIST" --separate-output -- checklist "Selectionner les jours :" LUN Lundi 0 MAR Mardi 0 MER Mercredi 0 JEU Jeudi 0 VEN Vendredi 0 SAM Samedi 0 DIM Dimanche 0 2> /tmp/reponse # Test si OK ou CANCEL ? if [ $? = 1 ]; then exit fi # Affichage avec TEXTBOX du choix utilisateur Xdialog --backtitle "TP 2" --title "Test TEXTBOX" --textbox /tmp/reponse 0 0 # efface le fichier temporaire rm -f /tmp/reponse
5. Un dernier pour la route version Xwindow #!/bin/bash # TP 3 : test de la barre de progression avec GUAGE # version Xdialog { for i in ; do echo $i sleep 1 done echo; } | Xdialog --gauge "Barre de progression"