Mein Lehrbuch sagt leider nichts dazu.

Mein erster Tipp hierzu wäre

man bash

zu lesen (oder welche Shell Du auch immer verwendest). Und ohne eine Shell zur Verfügung zu haben und aus einem Lehrbuch versuchen zu lernen, kann das meiner Meinung nach nichts werden. Da muss man offen gesagt wirklich fast jeden Fehler mal selbst gemacht haben und einen Spieltrieb für Try and Error haben.

Jetzt zur Frage:

while [ $1 ]

Führe aus solange etwas im Eingabepuffer ist, der mit shift immer das nächste Wort vorne hat (eigentlich ist das "[ $1 ]" eine logische Funktion die TRUE oder FALSE ergibt und de-facto heißt das "solange wahr")

case $1 in

prüft die Eingabe $1 auf einen Match mit den folgenden mit ")" abgeschlossen Ausdrücke. Matched $1 mit dem Ausdruck, wird das mit dem nachfolgenden Kommando folgende ausgeführt (bis zum ;;) und der case Block (abgeschlossen mit esac) danach instantan beendet (i.e nicht auf weitere Matches geprüft).

Das "in" leitet nur die verschiedenen Möglichkeiten, die geprüft werden sollen, ein und hat keine separate Bedeutung ohne das case.

...zur Antwort