#!/bin/bash questionWithDefaultSimple () { # Positional argument should strictly come before named arguments # 1er argument : Question à poser # 2e argument : Liste des options # 3e argument (optionnel) choix par défaut (sinon le premier item) QUESTION=$1 read -ra OPTIONS <<< "$2" # Transforme en array if [ -n "$3" ]; then # Si non donnée en entrèe => on prend le premier élément DEFAULT="$3" else DEFAULT="${OPTIONS[0]}" fi # Create pattern for printf COL_SIZE=15 # nombre de caractère pour chaque colonne FORMAT_STRING="%-${COL_SIZE}s %-${COL_SIZE}s %-${COL_SIZE}s %-${COL_SIZE}s\n" # 4 colonnes de $COL_SIZE caractère (méthode bourrin) # Show printf "$FORMAT_STRING" "${OPTIONS[@]}" # Mise en forme des options selon $FORMAT_STRING et affichage # Ask user printf "\x1b[1;32m$QUESTION\x1b[0m" # Question en gras + vert read -p " [$DEFAULT] : " -r INPUT # Demande d'input sans aller à la ligne INPUT=${INPUT:-${DEFAULT}} # Si l'input est vide, on rempli avec la valeur par défaut # Collect result if [[ "${OPTIONS[@]}" =~ "$INPUT" ]]; then # Si la réponse est une réponse valide, c-à-d que la valeur est présente dans $OPTIONS ANSWER=$INPUT # On garde la valeur dans ANSWER else ANSWER=$DEFAULT # Sinon on prend celle par défaut fi }