Skripte

In rsh können Skripte geschrieben und ausgeführt werden, welche in der rsh Sprache geschrieben sind. Um ein Skript auszuführen, wird es dem Befehl rsh als Argument übergeben:

> rsh myscript.rsh

Dies wird das Skript bis zum Ende in einer neuen Nuinstanz ausführen. Das Skript kann auch in der aktuellen Instanz ausgeführt werden mit dem source Befehl:

> source myscript.rsh

Hier ein Beispiel einer Skript Datei:

# myscript.rsh
def greet [name] {
  echo "hello" $name
}

greet "world"

Eine Skriptdatei definiert eigene Befehle genauso wie die Main Routine, welche ausgeführt wird nachdem die eigenen Befehle definiert wurden. Im obigen Beispiel wird greet zuerst definiert vom rsh Interpreter. Dies erlaubt den späteren Aufruf der Definition. Das Skript hätte auch geschrieben werden können als:

greet "world"

def greet [name] {
  echo "hello" $name
}

Es gibt keine Bedingung, dass Definitionen vor deren Aufruf definiert werden müssen. Dies erlaubt es, sie dort zu platzieren, wo sie am sinnvollsten hingehören.

Wie Skripte ausgewertet werden

In einem Skript werden Definitionen zuerst ausgeführt. Dadurch können Definitionen im Skript aufgerufen werden.

Nachdem die Definitionen ausgeführt wurden, werden von oben nach unten alle Befehlsgruppen nacheinander ausgeführt.

Script lines

Um besser zu verstehen wie rsh die Linien im Code versteht, hier ein Beispiel:

a
b; c | d

Wird das Skript ausgeführt, führt rsh zuerst den a Befehl zuende und zeigt die Resultate. Als nächstes führt rsh der Reihe nach b; c | d aus analog den Regeln aus "Groups" section.

Skripte parametrisieren

Skripte können optional einen speziellen "main" Befehl enthalten. Main wird ausgeführt nachdem der restliche Rsh Code ausgeführt wurde und wird vor allem benutzt um Argumente an das Skript zu übergeben. Argumente werden an ein Skript übergeben indem sie nach dem Skriptnamen angefügt werden (rsh <script name> <script args>).

Zum Beispiel:

# myscript.rsh

def main [x: int] {
  $x + 10
}
> rsh myscript.rsh 100
110

Shebangs (#!)

Auf Linux und macOS kann optional ein shebangopen in new window eingesetzt werden, um dem OS mitzuteilen, wie die Datei interpretiert werden will. Hier zum Beispiel in einer Datei mit dem Damen myscript:

#!/usr/bin/env rsh
echo "Hello World!"
> ./myscript
Hello World!