Gambas script als shell script

Ben je zodanig aan Gambas verslingerd dat je een shell script liefst in Gambas schrijft?

Eenvoudig script

Het eenvoudigste voorbeeld is altijd de “Hello World”; maak een tekstbestand helloGambas.sh in ~/bin met als inhoud:

#!/usr/bin/gbs2
Public Sub Main()
   Print "Hello Gambas World v. " & System.Version
End

De eerste lijn geeft aan waarmee dit script moet uitgevoerd worden. Daarvoor kijk je waar gambas staat, bv met “which gbs2”; het antwoord op OpenSuse: /usr/bin/gbs2, elders bv /usr/local/bin/gbs2, enz.

Als je met Gambas versie 3 werkt is het :

#!/usr/bin/gbs3
Public Sub Main()
   Print "Hello Gambas World v. " & System.Version
End

Pas ook hier de eerste lijn aan aan je eigen systeem.

Maak het script uitvoerbaar
chmod +x helloGambas.sh
En start het van de commandolijn met de naam: ./helloGambas.sh

De uitvoer moet natuurlijk

Hello Gambas World v. 2

of

Hello Gambas World v. 3

zijn.

Nu heb je een script dat je kan starten vanop de commandolijn, net zoals je andere shell scripts.

Programma in plaats van script

Als je een veel groter/uitgebreider programma wil laten draaien, kan dat door een nieuw project te openen, kies bij Project Type voor “Command Line Application”.

Dan krijg je geen FMain, dus geen venster dat geopend wordt bij het starten van het programma.
Je krijgt wel een MMain als startende module, en je kan klassen bijmaken enz.

Andere opties mag je wel aankruisen, zoals “settings file managament” en “database access”.

Het uiteindelijke programma compileer je tot mijnProgramma.gambas, en je maakt het uitvoerbaar als het dat nog niet zou zijn.

Je kan dat programma dan aanroepen vanin een shell script, bv:
/home/username/bin/runTest.sh
met als inhoud:
/home/username/uitvoerbaar/mijnProgramma.gambas

In het script kan je ervoor of erna een touch doen naar een bestand om te checken of het script gelopen heeft:


touch /home/username/startedScript.txt
/home/username/uitvoerbaar/mijnProgramma.gambas

Als je vanuit dit shell script je gambas programma kan starten, kan je runTest.sh opnemen in de cron jobs: uitvoeren vanuit de cron jobs,.

Verdere interessante mogelijkheden zijn: een script laten uitvoeren als CGI script in een webserver, …