#!/bin/bash numberedMenu () { # $1 = Question à poser # $2 = liste des éléments séparés par un espace # S3 (optionnal) = index de l'élément par défaut QUESTION=$1 read -ra OPTIONS <<< "$2" # Obtention de la liste de options if [ -n "$3" ]; then # Si donné par l'utilisateur (c-à-d variable non vide) DEFAULT=$3 else # Sinon, valeur par défaut DEFAULT=1 fi # Show printf "\n" for i in $(seq ${#OPTIONS[@]}); do # on compte le nombre d'options printf ' %3s %s\n' "$i)" "${OPTIONS[$(($i-1))]}" # On affiche la position dans la liste et la valeur de l'option done printf '\n' # ask user printf "\x1b[1;32m$QUESTION\x1b[0m" # Un peu de couleur (gras + vert) read -p " [$DEFAULT] : " -r INPUT # Demande valeur sans retour à la ligne INPUT=${INPUT:-${DEFAULT}} # Substitut par $DEFAULT si réponse vide # Collect result if [[ "$(seq ${#OPTIONS[@]})" =~ "$INPUT" ]]; then ANSWER="${OPTIONS[$(($INPUT-1))]}" else ANSWER="${OPTIONS[$(($DEFAULT-1))]}" fi }