Vorne rein, hinten raus

Über die runden Klammern lassen sich Parameter an die Funktion übergeben. Wie das funktioniert, verdeutlicht Listing 2: Beim Aufruf der Funktion dateiname landet die Zahl 1 in der Variablen num, der Text .png in der Variablen ende. Diese beiden Variablen stehen dann in der Funktion zur Verfügung.

Listing 2

function dateiname(num, ende) {
  datei = "foto" ++ num ++ ende;
  return datei;
}
dn = dateiname(1, ".png");
println(dn);

Anschließend baut die Funktion dateiname mit ihnen einen Dateinamen zusammen, den sie jedoch diesmal nicht mit println() auf den Bildschirm schreibt, sondern zurückliefert. Den ausgespuckten Dateinamen fängt dann wiederum die vorletzte Zeile in der Variablen dn auf. Welchen Wert die Funktion auf diese Weise zurückgibt, zeigt das Schlüsselwort return an, das auch gleichzeitig die Ausführung der Funktion abbricht.

Fallstricke

Im Gegensatz zu anderen Programmiersprachen erfolgt in Batsh keine Typprüfung. Sie könnten der Funktion dateiname daher auch zwei unsinnige Werte übergeben:

dn = dateiname("hmpf", 9876);

Listing 2 gäbe dann den Dateinamen fotohmpf9876 aus – in diesem Fall relativ harmlos. In komplexeren Funktionen können aber falsche oder mit Tippfehlern versehene Parameter mitunter drastische Auswirkungen haben.

Definieren Sie in einer Funktion eine neue Variable, dann ist diese nur in der Funktion sichtbar. Am Ende von Listing 3 können Sie folglich nicht auf die Variable b zugreifen. Wenn Sie es wie gezeigt dennoch probieren, vermutet Batsh, dass Sie eine neue Variable b meinen. Da neue Variablen jedoch standardmäßig leer bleiben, liefert println(b) einfach nur eine leere Zeile.

Listing 3

function gutentag() {
  b = "Tag!";
}
gutentag();
// b ist nur in der Funktion sichtbar
println(b);

In Listing 4 versucht die Funktion gruss() die Variable a zu ändern. Rufen Sie das fertige Skript auf, dann erhalten Sie die Ausgabe Hallo: Zwar kann gruss() auf den Wert a zugreifen, diesen aber nicht verändern. Versuchen Sie es doch, wie im Beispiel mit a = "Welt";, erstellt Batsh eine zweite Variable namens a, die nur innerhalb der Funktion sichtbar ist. Um das zu verhindern, müssen Sie die Variable zunächst mit einem global in der Funktion verfügbar machen. Das entsprechend veränderte Listing 5 gibt damit dann am Ende den Wert Welt aus.

Listing 4

a = "Hallo";
function gruss() {
  a = "Welt";
}
gruss();
println(a);

Listing 5

a = "Hallo";
function gruss() {
  global a;
  a = "Welt";
}
gruss();
println(a);

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 02/2018: PAKETE VERWALTEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...
sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 2 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...
Anfänger sucht Ratschläge
Alucard Nosferatu, 18.01.2018 21:56, 3 Antworten
Guten Tag, meine Wenigkeit würde gerne auf einer meiner Festplatten von meinen Feldrechnern e...
Suchprogramm
Heiko Taeuber, 17.01.2018 21:12, 1 Antworten
Hallo liebe Community, keine Ahnung ob dieses Thema hier schon einmal gepostet wurde. Ich hab...
Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 4 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...