Existenzfragen

Als wesentlich nützlicher als readdir() erweist sich die Funktion exists(): Sie prüft, ob eine Datei existiert. Ein Beispiel dafür zeigt Listing 7: Dort testet zunächst exists(), ob die Datei foto1.png im Verzeichnis /home/tim/Fotos/ liegt.

Listing 7

if (exists("/home/tim/Fotos/foto1.png")) {
  println("foto1.png existiert.");
}
else {
  println("foto1.png existiert nicht");
}

Den von exists() zurückgegebenen Wert prüft dann die if-Abfrage: Sofern die Datei vorhanden ist, führt das Skript die Anweisungen zwischen den oberen geschweiften Klammern aus, andernfalls die Anweisungen in den geschweiften Klammern nach dem else.

Den else-Teil können Sie bei Bedarf weglassen. Wie bei while dürfen Sie in den runden Klammern hinter if jeden logischen Ausdruck unterbringen, also etwa auch if (a > b) { ... }.

Allerdings gibt es in Listing 7 ein kleines Problem: Die Pfadangabe /home/tim/Fotos ist auf ein Linux-System zugeschnitten. Der Batsh-Compiler übersetzt sie jedoch in der Batch-Datei nicht in das passende Windows-Pendant, wie Abbildung 5 beweist. Es gibt auch keine Möglichkeit, dies zu ändern; Batsh kann Ihrem Skript noch nicht einmal verraten, ob es unter der Bash oder unter Windows läuft.

Abbildung 5: Die Pfadangabe /home/tim/Fotos übernimmt der Batsh-Compiler einfach in die fertige Batch-Datei.

Es gibt lediglich die eingebaute Funktion bash(), die einfach den ihr übergebenen Bash-Befehl ausführt:

bash("man convert");

Der Batsh-Compiler übersetzt diese Funktion nur dann, wenn Sie ein Bash-Skript erstellen lassen. Der Aufruf man convert taucht folglich nur im Bash-Skript auf, nicht jedoch in der Windows-Batch-Datei. Analog gibt es die Funktion batch(), die eine übergebene Batch-Anweisung absetzt. Der Batsh-Compiler übersetzt diese Funktion nur dann, wenn Sie das Skript für Windows kompilieren.

Oh, ein Kamel!

Sie können Batsh-Programme nicht nur auf der Batsh-Homepage [2] übersetzen lassen: Carbo Kuo stellt den Compiler im Quellcode unter einer MIT-Lizenz auf GitHub zur Verfügung [1].

Batsh wurde vollständig in der funktionalen Programmiersprache Ocaml geschrieben. Um den Compiler installieren zu können, benötigen Sie folglich eine entsprechende Ocaml-Umgebung, die sich jedoch in den Repositories der meisten Distributionen findet. Am einfachsten gelingt die Installation von Batsh über den Ocaml-eigenen Paketmanager OPAM. Unter Ubuntu richten Sie ihn über das Paket opam ein:

$ sudo apt-get install opam m4

Zur Installation einiger von Batsh verwendeter Zusatzbibliotheken benötigen Sie das Paket m4. Sobald diese Voraussetzungen erfüllt sind, spielt der folgende Befehl Batsh ein:

$ opam install batsh

So verspricht es zumindest Carbo Kuo. Auf unserem Testrechner mit Ubuntu 14.10 ließen sich jedoch die Abhängigkeiten von Batsh nicht auflösen.

Aus dem gleichen Grund scheiterte im Test auch das manuelle Übersetzen von Batsh aus dem Quellcode. Dazu sollte es eigentlich ausreichen, Ocaml über den Paketmanager einzurichten, das aktuelle Batsh-Quellcodepaket [3] herunterzuladen, es zu entpacken und dann mittels make und make install zu übersetzen und zu installieren.

Ausgedruckt

Die Batsh-Funktion println() besitzt noch den Bruder print(). Auch er präsentiert den übergebenen Text auf der Kommandozeile, schreibt ihn aber nicht in eine eigene Zeile. Beide Funktionen erlauben beliebig viele Parameter. Das folgende Beispiel gibt also den Text Hallo Welt aus:

a="Welt";
print("Hallo ", a);

Alternativ zu print() können Sie auch das nicht dokumentierte echo() verwenden. print() übersetzt der Batsh-Compiler zu "echo" "-ne", die Funktion echo() hingegen einfach nur zu "echo".

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 03/2018 NEUE DISTRIBUTIONEN

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

Internet abschalten
Karl-Heinz Hauser, 20.02.2018 20:10, 0 Antworten
In der Symbolleiste kann man das Kabelnetzwerk ein und ausschalten. Wie sicher ist die Abschaltu...
JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 2 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
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...