Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:david5647:tutos:bash-fonctions-liste-de-choix-pour-script-interactifs [24/03/2021 01:40] David5647 [Choix parmi liste : complet] |
utilisateurs:david5647:tutos:bash-fonctions-liste-de-choix-pour-script-interactifs [24/03/2021 17:53] (Version actuelle) David5647 [Choix parmi liste numérotée] |
||
---|---|---|---|
Ligne 19: | Ligne 19: | ||
Finalement, dans la dernière partie (exemple), vous trouverez un script compilant toutes les fonctions à des fins de démonstration. | Finalement, dans la dernière partie (exemple), vous trouverez un script compilant toutes les fonctions à des fins de démonstration. | ||
+ | |||
+ | **bonus**: pour dé-commenter les scripts: | ||
+ | <code user> cat script.sh | sed '/^\s*#/d' | sed 's/#.*$//' > script_sans commentaires.sh | ||
+ | </code> | ||
===== Question binaire ===== | ===== Question binaire ===== | ||
Ligne 195: | Ligne 199: | ||
- | ===== Choix parmi liste numérotée ===== | + | ===== Choix parmi liste numérotée : build-in select ===== |
+ | |||
+ | la build-in select effectue une boucle infinie demandant de choisir parmi une liste, | ||
+ | vous pouvez insérer une instruction **case** ou un nouveau **select** pour faire des sous menus. | ||
+ | |||
+ | === Utilisation === | ||
+ | |||
+ | <file bash _> | ||
+ | numberWithSelect "Votre choix?" "arg1 arg2 arg3 arg4 arg5 arg6" | ||
+ | </file> | ||
+ | |||
+ | <code>Votre choix? | ||
+ | 1) arg1 | ||
+ | 2) arg2 | ||
+ | 3) arg3 | ||
+ | 4) arg4 | ||
+ | 5) arg5 | ||
+ | 6) arg6 | ||
+ | |||
+ | #? 5 | ||
+ | Vous avec choisi arg5 | ||
+ | </code> | ||
+ | |||
+ | === Script === | ||
+ | |||
+ | <file bash numberWithSelect> | ||
+ | numberWithSelect () { | ||
+ | |||
+ | QUESTION=$1 | ||
+ | read -ra OPTIONS <<< "$2" | ||
+ | |||
+ | echo $QUESTION | ||
+ | select ANSWER in ${OPTIONS[@]}; do | ||
+ | if [ -n "$ANSWER" ]; then | ||
+ | echo "Vous avec choisi $ANSWER" | ||
+ | break | ||
+ | else | ||
+ | echo "Il n'y a pas de tel index!" | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | } | ||
+ | |||
+ | </file> | ||
+ | |||
+ | |||
+ | ===== Choix parmi liste numérotée avec valeur par défaut ===== | ||
==== Utilisation ==== | ==== Utilisation ==== | ||
Ligne 219: | Ligne 269: | ||
numberedMenu () { | numberedMenu () { | ||
- | # $1 = question to ask | + | # $1 = Question à poser |
- | # $2 = elements separted by space | + | # $2 = liste des éléments séparés par un espace |
- | # S3 (optionnal) = index of defaut element | + | # S3 (optionnal) = index de l'élément par défaut |
QUESTION=$1 | QUESTION=$1 | ||
- | read -ra OPTIONS <<< "$2" # Keep options list | + | read -ra OPTIONS <<< "$2" # Obtention de la liste de options |
- | if [ -n "$3" ]; then | + | if [ -n "$3" ]; then # Si donné par l'utilisateur (c-à-d variable non vide) |
DEFAULT=$3 | DEFAULT=$3 | ||
- | else | + | else # Sinon, valeur par défaut |
DEFAULT=1 | DEFAULT=1 | ||
fi | fi | ||
Ligne 234: | Ligne 284: | ||
# Show | # Show | ||
printf "\n" | printf "\n" | ||
- | for i in $(seq ${#OPTIONS[@]}); do | + | for i in $(seq ${#OPTIONS[@]}); do # on compte le nombre d'options |
- | printf ' %3s %s\n' "$i)" "${OPTIONS[$(($i-1))]}" | + | printf ' %3s %s\n' "$i)" "${OPTIONS[$(($i-1))]}" # On affiche la position dans la liste et la valeur de l'option |
done | done | ||
printf '\n' | printf '\n' | ||
# ask user | # ask user | ||
- | printf "\x1b[1;32m$QUESTION\x1b[0m" | + | printf "\x1b[1;32m$QUESTION\x1b[0m" # Un peu de couleur (gras + vert) |
- | read -p " [$DEFAULT] : " -r INPUT | + | read -p " [$DEFAULT] : " -r INPUT # Demande valeur sans retour à la ligne |
- | INPUT=${INPUT:-${DEFAULT}} | + | INPUT=${INPUT:-${DEFAULT}} # Substitut par $DEFAULT si réponse vide |
# Collect result | # Collect result |