Programme mit passendem Interpreter starten

Datum: 2002-07-03
Quelle: suse-linux

Worum ging es?

Es gibt Programme und Scripts. Unter diesen wiederum gibt es Shell-, Perl-, PHP-, Python-, ... Scripts. Nicht immer kann man sie einfach durch den Aufruf der Script-Datei starten (z. B. wenn das executable-Flag nicht gesetzt ist). In diesem Fall kann man auf Informationen des file-Kommandos oder ganz ordinär auf die magische erste Zeile #! /pfad/zum/intepreter des Scripts zugreifen. Das folgende Schnipselchen vereinigt beide Ideen.

Code
ls $dir | while read f; do
  test -f "$f" || continue
  ftype="`file -b $f"
  if echo $ftyp | grep -q 'ELF 32-bit LSB executable'; then
    # Binary
    "verzeichnis/$f"
  elif echo $ftyp | grep -q 'perl script text'; then
    # perl script
    $perl "$f"
  elif echo $ftyp | grep -q 'Bourne-Again shell script text'; then
    # shell script
    $shell "$f"
  elif echo $ftyp | grep -q 'script text'; then
    # script: get interpreter
    prog="`head -1 \"$f" | sed 's/^#!//'`"
    $prog "$f"
  # ...
  fi
done
Beschreibung

Das Script startet alle aufgefundenen Programme / Scripts in einem Verzeichnis. Es ist ein Gerüst für den Aufbau eigener Programme, kein ablauffähiges Programm.