Script bash utilisant dialog

Résolu
999LOD666 Messages postés 2 Date d'inscription mercredi 12 juin 2024 Statut Membre Dernière intervention 15 juin 2024 - Modifié le 13 juin 2024 à 14:31
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 17 juin 2024 à 11:50

Bonjour.
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.

A voir également:

2 réponses

mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
13 juin 2024 à 14:37

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
done

Bonne chance

1
999LOD666 Messages postés 2 Date d'inscription mercredi 12 juin 2024 Statut Membre Dernière intervention 15 juin 2024
15 juin 2024 à 02:35

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.

0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
17 juin 2024 à 11:50

De rien et bonne continuation ;-)

0