[Bash Shell] Posez une question à un utilisateur

Autres projets et contributions
Avatar de l’utilisateur
TuxSpirit
Chu Ko Nu
Messages : 338
Inscription : jeu. 08 nov. 2007, 14:11
Localisation : Suisse/VD

[Bash Shell] Posez une question à un utilisateur

Message par TuxSpirit »

Il peut arriver que dans un script pour une raison ou une autre, une ou des questions soient posées à l'utilisateur, par exemple pour installer un programme, etc...

Code : Tout sélectionner

echo -e "Voulez-vous installer ce programme maintenant [O/n] ?"
read REP

case $REP in 
             N|n)
                   #Votre code, par exemple:
                   echo -e " Le programme XYZ ne sera pas installé "
                   exit
             ;;
             O|o|*)
                    #Votre code, par exemple :
                    echo -e " Installation du programme XYZ..."
                    ...
             ;;
esac
Amicalement,
TuxSpirit
Avatar de l’utilisateur
Tebo
Chu Ko Nu
Messages : 368
Inscription : sam. 17 mars 2007, 23:24

Message par Tebo »

my2cent,

yaourt utilise une fonction pour pimenter un peu la chose:

Code : Tout sélectionner

prompt() {
	echo -e "$yellow==> $nc $cyan$1 $nc" >&2
	echo -e "$yellow==> $nc $cyan-------------------------- $nc" >&2        
	echo -ne "$yellow==> $nc" >&2
			}

yellow="\e[1;33m"
cyan="\e[1;36m"
nc="\e[0m"

prompt "Question?"
echo -e "$cyan 1->$yellow oui/non $nc"
read -en 1 _result
echo 
case $_result in
	O|o|*)
	   echo -e job
	;;
	N|n)
           echo -e pas de job
	exit
    esac
   wait
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

Pour éviter les case et les tests à répétition, on peut utiliser une fonction "input" qui se charge de mettre la réponse en minuscule.

Code : Tout sélectionner

input(){
        read -n 1
        echo $REPLY | tr '[[:upper:]]' '[[:lower:]]'
}


echo -e "Voulez-vous installer ce programme maintenant [O/n] ?"
REP=`input`

if [ "$REP" = "n" ]; then
                   #Votre code, par exemple:
                   echo -e " Le programme XYZ ne sera pas installé "
                   exit
else
                    #Votre code, par exemple :
                    echo -e " Installation du programme XYZ..."
                    ...
fi
Avatar de l’utilisateur
TuxSpirit
Chu Ko Nu
Messages : 338
Inscription : jeu. 08 nov. 2007, 14:11
Localisation : Suisse/VD

Message par TuxSpirit »

tebo et wain merci pour vos exemples, c'est cool :D
Amicalement,
TuxSpirit
Répondre