Sicher verstaut - Deduplizierung spart Platz, Cloud-Backup für Windows, Areca sichert kostenlos. ADMIN 01/14 stellt Backups für Profis mit und ohne Cloud ... (mehr)

Schleifen

Die Kontrollstrukturen in Lua sind im Wesentlichen die gleichen wie bei anderen gängigen Programmiersprachen. Es gibt If-Abfragen, die mehrere Elseif- und einen Else-Block enthalten können. Ein While-Statement prüft immer wieder zu Beginn eine Bedingung und arbeitet den Block ab, solange sie erfüllt ist. Ein Repeat-Block funktioniert umgekehrt und läuft solange, bis die Bedingung nicht mehr erfüllt ist, die am Ende des Blocks steht.

For-Schleifen können sich über Zahlenbereiche erstrecken oder über eine Iterator-Funktion, die man beispielsweise aus einem Array erzeugt. Dafür gibt es spezielle Funktionen wie »pairs« oder »ipairs« . Der folgende Code iteriert mit einer For-Schleife über ein Array:

tbl = {"a", "b", "c"}
for key, value in ipairs(tbl) do
   print(key, value)
end

Eine numerische For-Schleife erstreckt sich über einen Zahlenbereich, wahlweise mit oder ohne Schrittweite: »for i = 1, 5« geht jede ganze Zahl zwischen 1 und 5 durch, während »for i = 1, 10, 2« in Zweierschritten voranschreitet.

Ein Break-Statement bricht den Ablauf der erwähnten Schleifen ab und fährt danach mit der Bearbeitung fort. Ein Continue-Statement, das es in anderen Programmiersprachen gibt und ans Ende einer Schleife springt, aber dann fortfährt, fehlt seltsamerweise. Man muss es etwas umständlich mit einem Goto simulieren:

for i = 1, 10 do
   if i % 2 == 0 then goto continue end
   print(i)
   ::continue::
end

Eine Goto-Sprungmarke wird, wie hier zu sehen, durch zwei doppelte Doppelpunkte eingeschlossen. Um die Continue-Anweisung zu simulieren, setzt man sie direkt vor das Schleifenende.

Rocks

Damit sind die wichtigsten Sprach-Features von Lua erklärt, mit denen es sich schon ganz gut leben lässt. Zum Weiterlesen und zum schnellen Nachschlagen von Syntax und Funktionen bietet sich die Sprachreferenz an [6].

Weil eine Programmiersprache ohne ein gesundes Ökosystem wenig wert ist, gibt es das Modul-Repository Luarocks [7]. Es ist im Handumdrehen aus dem Quellcode installiert, aber auch in den meisten Linux-Distributionen enthalten. Ein Aufruf von »luarocks search Begriff« sucht in den Paketquellen, »luarocks install Paket« installiert es lokal. Root-Rechte sind nötig, wenn der Speicherort für die Pakete nur für den Superuser beschreibbar ist. Tabelle 2 zeigt eine Auswahl nützlicher Erweiterungen, die im Luarocks-Verzeichnis zu finden sind.

Tabelle 2

Luarocks

Modul

Funktion

AesFileEncrypt

AES-Verschlüsselung

Flu

Modul für das »Filesystem in Userspace« (FUSE)

Inotify

API für Inotify

JSON4Lua

JSON-Modul

lapis

Web-Framework für MoonScript und Lua

lbase64

Base64-Modul

lposix

POSIX-Bibliothek (inklusive Curses)

lsocket

Unix-Sockets

lsqlite3

Anbindung an SQLite-Datenbank

lua-csnappy

Unterstützung für Googles Snappy-Komprimierung

lua-ev

Modul für Linux-Libev

lua-gnuplot

Diagramme mit Gnuplot

lua-inih

Parser für Ini-Dateien

lua-websockets

Websockets für Lua

LuaCrypto

Lua-Frontend für OpenSSL

luadaemon

Macht aus Lua-Programmen Unix-Daemons

luadbi-mysql

Datenbankabstraktion für MySQL

luadbi-postgresql

Datenbankabstraktion für PostgreSQL

luadns

DNS

LuaFileSystem

Module für Dateisystemzugriff

lualogging

Logging-API

lzlib

ZLib-Komprimierung (Gzip)

MD5

MD5-Hashes

Leider sind nicht alle Lua-Bibliotheken in Luarocks zu finden. So gibt es beispielsweise noch Module für LDAP und so moderne Dinge wie die Libguestfs und die Konfigurations-API Augeas. Für Linux-Anwender empfiehlt sich auf jeden Fall, einmal das distributionseigene Repository nach dem Schlüsselwort »lua« zu durchsuchen.

Dank der großen Verbreitung von Lua herrscht an Tools zur Programmierung kein Mangel. Wer zur Entwicklung andere Programme als Vi oder Emacs verwenden will, kann auf eine Reihe von grafischen Entwicklungsumgebungen zurückgreifen, zum Beispiel Zerobrane (Abbildung 2), das es für Linux, Windows und OS X gibt und soviel kostet, wie man zu zahlen bereit ist [8]. Auch für die großen Java-IDEs wie Eclipse, Netbeans und IntelliJ gibt es Lua-Plugins. Zerobrane ist auf jeden Fall einen Versuch wert. Die Website bietet zahlreiche Tutorials, beispielsweise zum Debuggen von Wireshark-Skripts [9].

Abbildung 2: Für die Zerobrane-IDE dürfen Anwender soviel zahlen, wie sie möchten.

Als Blick über den Tellerrand hinaus ist die Codea-IDE [10] interessant, die eine Lua-Entwicklungsumgebung auf dem iPad implementiert (Abbildung 3). Sehenswert ist allemal das Video auf der Codea-Seite, das zeigt, wie eine Entwicklungsumgebung aussehen kann, die je nach Datentyp den Programmierer bei der Eingabe etwa mit Farb- und Dateiauswahl unterstützt.

Abbildung 3: Codea ist eine Lua-Entwicklungsumgebung auf dem iPad. IT:Infos
comments powered by Disqus
Mehr zum Thema

MySQL-Schemaänderungen im laufenden Betrieb

Schemaänderungen in MySQL können eine Herausforderung sein. Aber mit den richtigen Tools lässt sich die Aufgabe selbst bei großen Datenbanken effizient lösen.

Artikel der Woche

Support-Ende von SMBv1

Mit dem aktuellen Update für Windows 10 und Windows Server 2016 steht eine Änderung ins Haus, die gerade für Benutzer älterer Linux-Distributionen große Auswirkungen hat. Nachdem Microsoft es über viele Jahre schon angekündigt hat, entfernt der Konzern mit dem aktuellen Update-Release den Support für das SMB-Protokoll 1. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2017

Microsite