Det kan være sjovt at lære et nyt programmeringssprog. Når jeg forsøger at lære et nyt sprog, fokuserer jeg på at definere variabler, skrive et statement og evaluere udtryk. Når jeg først har en generel forståelse af disse begreber, kan jeg som regel selv finde ud af resten. De fleste programmeringssprog har nogle ligheder, så når man først kender et programmeringssprog, er det at lære det næste et spørgsmål om at finde ud af de unikke detaljer og genkende forskellene i det.

For at hjælpe mig med at øve mig i et nyt programmeringssprog skriver jeg gerne et par testprogrammer. Et prøveprogram, som jeg ofte skriver, er et simpelt “gæt tallet”-program, hvor computeren vælger et tal mellem et og 100 og beder mig om at gætte tallet. Programmet løber i sløjfer, indtil jeg gætter rigtigt.

Det “gæt tallet”-program træner flere begreber i programmeringssprog: hvordan man tildeler værdier til variabler, hvordan man skriver udsagn, og hvordan man udfører betinget evaluering og sløjfer. Det er et godt praktisk eksperiment til at lære et nyt programmeringssprog.

Gæt tallet i Bash

Bash er standardskallen til de fleste Linux-systemer. Ud over at levere en rig kommandolinje-brugergrænseflade understøtter Bash også et komplet programmeringssprog i form af scripts.

Hvis du ikke er bekendt med Bash, anbefaler jeg disse introduktioner:

  • Hvad er Bash?
  • Kom godt i gang med Bash-programmering
  • Kom godt i gang med Bash-scripting for sysadmins
  • Sådan skriver du funktioner i Bash
  • Læs mere om Bash

Du kan udforske Bash ved at skrive en version af “gæt tallet”-spillet. Her er min implementering:

Skriftet nedbrydes

Den første linje i scriptet, #!/bin/bash, fortæller Linux at køre dette script ved hjælp af Bash-shell’en. Alle scripts starter med tegnparret #!, som angiver, at der er tale om et shellscript. Det, der følger umiddelbart efter #!, er den shell, der skal køres. I dette tilfælde er /bin/bash Bash-shell’en.

For at tildele en værdi til en variabel skal du angive variablens navn efterfulgt af tegnet =. Angivelsen guess=0 tildeler f.eks. en nulværdi til variablen guess.

Du kan også bede brugeren om at indtaste en værdi ved hjælp af read-anvisningen. Hvis du skriver read guess, venter Bash på, at brugeren indtaster noget tekst og gemmer derefter denne værdi i guess-variablen.

For at henvise til værdien af en variabel skal du bruge $ foran variabelnavnet. Så når du har gemt en værdi i guess-variablen, kan du hente den ved hjælp af $guess.

Du kan bruge alle de navne, du vil, til variabler, men Bash forbeholder sig selv nogle få specielle variabelnavne. En særlig variabel er RANDOM, som genererer et meget stort tilfældigt tal, hver gang du refererer til den.

Hvis du ønsker at udføre en operation samtidig med, at du gemmer en værdi, skal du omslutte erklæringen i særlige parenteser. Dette fortæller Bash, at den skal udføre den pågældende erklæring først, og = gemmer den resulterende værdi i variablen. Hvis du vil evaluere et matematisk udtryk, skal du bruge $(( )) omkring din erklæring. De dobbelte parenteser angiver et aritmetisk udtryk. I mit eksempel evaluerer number=$(( $RANDOM % 100 + 1 )) udtrykket $RANDOM % 100 + 1 og gemmer derefter værdien i variablen number.

Standard aritmetiske operatorer som + (plus), - (minus), * (multiplicere), / (dividere) og % (modulo) finder anvendelse.

Det betyder, at udsagnet number=$(( $RANDOM % 100 + 1 )) genererer et tilfældigt tal mellem 1 og 100. Modulo-operatoren (%) returnerer restbeløbet efter division af to tal. I dette tilfælde dividerer Bash et tilfældigt tal med 100 og efterlader en rest i intervallet nul til 99. Ved at lægge et til denne værdi får du et tilfældigt tal mellem et og 100.

Bash understøtter betingede udtryk og flowkontrol som sløjfer. I “gæt tallet”-spillet fortsætter Bash sløjfen, så længe værdien i guess ikke er lig med number. Hvis gættet er mindre end det tilfældige tal, udskriver Bash “For lavt”, og hvis gættet er større end tallet, udskriver Bash “For højt.”

Sådan fungerer det

Nu, hvor du har skrevet dit Bash-script, kan du køre det for at spille “gæt tallet”-spillet. Fortsæt med at gætte, indtil du finder det rigtige tal:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Hver gang du kører scriptet, vælger Bash et andet tilfældigt tal.

Dette “gæt tallet”-spil er et godt introduktionsprogram, når du skal lære et nyt programmeringssprog, fordi det øver flere almindelige programmeringsbegreber på en ret ligetil måde. Ved at implementere dette enkle spil i forskellige programmeringssprog kan du demonstrere nogle centrale begreber og sammenligne detaljer i hvert sprog.

Har du et yndlingsprogrammeringssprog? Hvordan ville du skrive “gæt tallet”-spillet i det? Følg denne artikelserie for at se eksempler på andre programmeringssprog, der måske interesserer dig.