Aller au contenu

Extensions ksh (printf, read, select)#


Introduction aux extensions ksh#

  • KSH fournit des extensions pour plusieurs commandes Unix standard comme printf, read et select.
  • Ces extensions offrent plus de flexibilité et de fonctionnalités par rapport à leurs équivalents en Bourne Shell ou Bash.
  • Les extensions sont conçues pour améliorer l'interactivité des scripts et la manipulation des données.

printf#

  • printf dans ksh offre une compatibilité avec la commande C éponyme.
  • Il permet une mise en forme fine des sorties, avec des spécificateurs de format pour différents types de données.
  • Syntaxe : printf format [arguments]
  • Exemple : printf "%s\n" $variable permet d'imprimer le contenu de la variable suivi d'une nouvelle ligne.

read#

  • read en ksh est utilisé pour lire une ligne d'entrée.
  • Il a la possibilité de lire dans plusieurs variables à la fois, permettant une manipulation facile des données structurées.
  • Syntaxe : read var1 var2 ... varN
  • Exemple : read name age lira une ligne d'entrée et assignera les valeurs à $name et $age.

La gestion des menus avec select#

La commande select écrit sur la sortie d'erreur standard la liste des choix, chacun étant précédé d'un numéro. Si in liste_choix n'est pas spécifié, les paramètres positionnels sont utilisés.

select Identificateur [in liste_choix] 
do 
    commande
    ...
done

Le contenu de la variable PS3 s'affiche et l'entrée standard est lu. Si le numéro d'un des mots listés est saisie, le paramètre Identificateur prend la valeur de ce mot.


La gestion des menus avec select (suite)#

Si la ligne est vide, la liste s'affiche de nouveau. Sinon, la valeur du paramètre Identificateur est "". Le contenu de la ligne lue à partir de l'entrée standard est sauvegardé dans le Paramètre REPLY. La liste est exécutée pour chaque sélection jusqu'à un caractère d'interruption ou de fin de fichier.

PS3=" votre choix "
select menu_list in "choix 1"  "choix 2"  "fin"
do
  case $menu_list in
    "choix 1").... ;;
    "choix 2")... ;;
    "fin") exit 0 ;;
    "") echo "$REPLY est une option invalide "
  esac
done