#!/bin/sh
#
# Beispiel zu select
#
# 14.1.2006

# Durch die while-Schleife wird das Auswahl-Menü vor jeder Auswahl ausgegeben.
while ((1))
do
  # Wir löschen vor select immer die Variable name. An einem leeren String
  # in name erkennen wir EOF, da select in diesem Falle die Variable
  # unverändert lässt.
  unset name
  select name in Anton Berta Caesar
  do
    # Wenn name nicht leer ist, liegt eine korrekte Auswahl vor. Dann brechen
    # wir select ab, um vor der nächsten Auswahl wieder das Menü angezeigt
    # zu bekommen. Bei einer ungültigen Auswahl ist name leer. Dadurch wird
    # der Körper von select bis zum Ende abgearbeitet, was zur Folge hat,
    # dass wir select nicht beenden, so dass sich eine neue Auswahl ohne
    # Ausgabe des Menüs anschließt.
    [[ -n $name ]] && break
  done
            
  # Bei EOF brechen wir das Skript ab. Mit break statt exit könnte man auch 
  # nur die while-Schleife abbrechen. Falls select innerhalb einer Funktion
  # ausgeführt würde, könnte man mit return statt exit diese Funktion
  # abbrechen.
  [[ -z $name ]] && { echo 'Abbruch ohne Auswahl' ; exit ; }
  echo "Auswahl: $name"
done

