Skalet sh

Översikt, 7: Kontrollstrukturer

De fyra huvudsakliga kontrollstrukturerna i skalet är "if", "while", "for" och "case". De ser ut på följande sätt:

   if
     villkorskommand
   then
     kommando
   else
     kommando
   fi
"Else"-delen kan utelämnas.

Upprepningskonstruktionerna "while" och "for" liknar varandra:

  while
    villkor
  do
    kommando
  done

  for variabel in värde1 värde2 ...
  do
    kommando
  done
I fallet med "for" antar variabeln i tur och ordning vart och ett av värdena som angetts.

Den fjärde kontrollstrukturen är "case" som, precis som i flera andra programspråk, används för att välja mellan flera alternativ. Formen är

  case VÄRDE in
     Första alternativet)
         Kommandon
         ;;
     Andra alternativet)
         Kommandon
         ;;
     fler alternativ...
  esac

Alternativen tolkas i den ordning som skrivs, och om värdet passar in på mer än ett alternativ väljs det första av de passande alternativen. Vill man ha flera alternativ som gör samma sak, så kan man ange dem med "|" emellan. En ytterligare finess är att alternativen kan innehålla mönstertecken, så att till exempel alternativet "A*" motsvarar vad som helst som börjar med "A". Det finns ingen speciell konstruktion som motsvarar det som brukar heta "else", "otherwise" eller "default" i andra programspråk. Istället använder man alternativet "*" som sista alternativ.