Script bash utilisant dialog
RésoluBonjour.
Je ne connais pas grand chose à la programmation script et après avoir consulté une bonne cinquantaine de pages et sites dédiés à "dialog" et ses exemples, je ne sais pas comment réaliser la fonction suivante.
Je pars sur la base de ce script pour réaliser un projet de menu de sélection d'applications locales :
#!/bin/bash
cmd=(dialog --separate-output --checklist "Select options:" 22 76 16)
options=(1 "Option 1" off # any option can be set to default to "on"
2 "Option 2" off
3 "Option 3" off
4 "Option 4" off)
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
clear
for choice in $choices
do
case $choice in
1)
echo "First Option"
;;
2)
echo "Second Option"
;;
3)
echo "Third Option"
;;
4)
echo "Fourth Option"
;;
esac
done
Il permet de sélectionner plusieurs items - comme je le souhaite.
Mais j'aimerais qu'en sélectionnant la "Première option" toutes les autres soient aussi sélectionnées, c'est-à dire-l'équivalent d'un "Tout sélectionner" en choisissant la seule "Première option" et uniquement celle-ci.
Est-ce possible ?
Merci d'avance pour votre aide.
2 réponses
-
Bonjour,
Merci de partager tes futurs extraits de code comme expliqué dans ce tutoriel.
Tu peux te reporter à ce message, qui répond exactement à ta question.
#!/bin/bash onoff=off cmd=(dialog --output-fd 1 --separate-output --extra-button --extra-label "Select All" --cancel-label "Select None" --checklist "Select options:" 0 0 0) load-dialog () { options=( 1 "Option 1" $onoff 2 "Option 2" $onoff 3 "Option 3" $onoff 4 "Option 4" $onoff ) choices=$("${cmd[@]}" "${options[@]}") } load-dialog exit_code="$?" while [[ $exit_code -ne 0 ]]; do case $exit_code in 1) clear; onoff=off; load-dialog;; 3) clear; onoff=on; load-dialog;; esac exit_code="$?" done clear for choice in $choices do case $choice in 1) echo "First Option";; 2) echo "Second Option";; 3) echo "Third Option";; 4) echo "Fourth Option";; esac doneBonne chance
-
Bonjour.
Un très grand merci @mamiemando.
C'est exactement la solution que j'espérais et elle répond parfaitement à mes attentes.
Merci pour votre réactivité et votre aide.