Pagina1 van 1

Bash Script – Press Any Key To Continue

Bash Script – Press Any Key To Continue
   0

In dit artikel een korte beschrijving hoe ik “Press Any Key to Continue” (Druk een toets om verder te gaan) in een Bash script (Linux/MacOS X) heb geïmplementeerd.

Ik werk niet iedere dag met scripts in Bash (Terminal of Shell) dus ik gebruik dit meteen als referentie voor mezelf. In mijn geval wilde ik een script hebben welke Lazarus Pascal update van SVN, en vervolgens het hele zaakje gaat compileren en linken. Echter; ik wilde eerst zien wat er geüpdate was vanuit SVN door een eenvoudige “Press Any Key To Continue” in het script, zodat ik eerst kon lezen wat er nieuw was voor er vanalles over het scherm zou flitsen.

Omdat ik het e.e.a. moest uitzoeken om dit te vinden, leek het me handig dit in een minuscuul artikeltje te proppen. Dan hebben anderen er ook wat aan.




Bash Press Key to continue

In bepaalde situatie, wil men misschien graag een “Press any key to continue” optie in een script, zodat de gebruiker een moment de tijd heeft om eventuele tekst door te lezen voor het script verder gaat. In mijn situatie was dit een script dat ik gemaakt had om een SVN update van Lazarus Pascal uit te voeren, en vervolgens een :make” uit te voeren. Voordat “make” echter start, zou ik graag willen zien wat er nu geüpdate is vanuit SVN zodat ik een idee heb wat ik mag verwachten als “make” klaar is met compileren en linken. Uiteraard kan de hier beschreven methode voor allerlei scripts gebruikt worden, ook al hebben ze niets met Lazarus Pascal van doen.

In dit geval gebruik ik het “read” commando (man page), wat beschikbaar is onder Linux en MacOS X. Omdat de “man page” onder MacOS wat beperkt is, adviseer ik de man page link te bezoeken – mocht je meer willen weten.

De eenvoudigste methode die ik tot nu toe heb is:


read -n 1 -r -s -p $'Press enter to continue...\n'

Merk wel op dat dit eigenlijk niet voor “alle” toetsen werkt. Toetsen zoals Shift, Alt, Ctrl, Windows, Alt-menu, en Command (  ) werken niet met deze methode. Dus als dat een probleem is dan zul je verder moeten kijken naar een andere optie.

Parameters
Parameter Doel
-n 1 Kom terug naar het script na dat een karakter is aangeslagen (en daarom werken Alt, Shift enz. dus niet omdat dit geen karakters zijn).
-r Sta backslashes voor escape karakters niet toe (zodat dit ook met het indrukken van de backslash werkt)
-s Geef, wat getypt is, niet weer.
-p $”Press any key to continue\n” Geef een prompt weer die zegt “Press any key to continue” (\n = nieuwe regel).
Het Dollar symbool ($) moet voor de tekst met aanhalingstekens staan zodat “\n” voor een nieuwe regel werkt.

Time Out Toevoegen

Misschien handig, als je een script automatisch door wilt laten gaan, na een zogenaamde time-out. Dus als de gebruiker na een x aantal seconden nog niets heeft gedaan, gaat het script automatisch verder (5 seconden in onderstaand voorbeeld). Je kunt dit zo doen:


read -t 5 -n 1 -s -r -p "Press any key to continue"

De parameter “-t 5 ” zet de timeout op 5 seconden – je kunt dit naar wens aanpassen natuurlijk.

Varianten

Press ENTER to continue (Druk op Enter om door te gaan)


1
read -r -s -p $'Press enter to continue...'

Press Escape to continue (Druk op Escape om door te gaan)


read -r -s -p $'Press escape to continue...\n' -d $'\e'

Hier bepaalde de parameter -d $'\e' dat de Escape toets (\e) het “laatste” karakter is (net zoiets als de ENTER toets zeg maar). Let er wel op dat de gebruiker dus naar hartelust andere toetsen kan indrukken, ook al doen die niets tot de gebruiker op Escape drukt.

 Merk op : De “Press any key to continue” methode werkt ook met de Escape toets en is misschien een betere optie tenzij Escape echt noodzakelijk is.

Donatie opties


Donaties worden zeer gewaardeerd maar zijn echt niet verplicht. Donaties worden gebruikt om de web-hosting kosten te dekken, hard- of software aan te schaffen voor projecten die we hier bespreken, of zo nu en dan voor een pilsje of een kopje koffie!

Reacties


Er zijn nog geen reacties geplaatst.
Je kunt jouw eigen opmerkingen plaatsen m.b.v. dit formulier, of een reactie op een bestaande opmerking plaatsen door op de "Beantwoorden" knop te klikken.



Jouw opmerking ...

Vriendelijk verzoek om hier geen lange bestanden te posten (zoals source codes, log bestanden of config bestand). Gebruik het Forum hiervoor.

Deel:
*
*
Stuur me een notificatie van nieuwe opmerkingen (email).
       Je kunt jouw RSS reader gebruiken op opmerkingen te volgen.


Tweaking4All gebruikt de gratis Gravatar dienst voor de weergave van Avatars.
Tweaking4All deelt jouw email adressen NOOIT.