GoGPT Best VPN GoSearch

OnWorks-Favicon

escript - Online in der Cloud

Führen Sie escript im kostenlosen OnWorks-Hosting-Anbieter über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist das Befehls-Escript, das im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


escript - Erlang-Scripting-Unterstützung

BESCHREIBUNG


Eskript bietet Unterstützung beim Ausführen kurzer Erlang-Programme, ohne sie kompilieren zu müssen
erste und eine einfache Möglichkeit, die Befehlszeilenargumente abzurufen.

EXPORTE


Skriptname script-arg1 script-arg2...
Eskript Escript-Flags Skriptname script-arg1 script-arg2...

Eskript führt ein in Erlang geschriebenes Skript aus.

Hier folgt ein Beispiel.

$ chmod u+x Fakultät
$ Katzenfabrik
#!/usr/bin/env Eskript
%% -*- Erlangen -*-
%%! -smp enable -sname faktoriell -mnesia debug verbose
main([String]) ->
versuchen
N = list_to_integer(String),
F = fac(N),
io:format("faktorielle ~w = ~w\n", [N,F])
Fang
_:_ ->
Verwendungszweck()
end;
Haupt(_) ->
Verwendungszweck().

Verwendung() ->
io:format("Verwendung: Fakultätszahl\n"),
Lahmheit(1).

fac(0) -> 1;
fac(N) -> N * fac(N-1).
$ ./faktorielle 5
Fakultät 5 = 120
$ ./faktoriell
Verwendung: faktorielle ganze Zahl
$ ./faktorielle fünf
Verwendung: faktorielle ganze Zahl

Der Header des Erlang-Skripts im Beispiel unterscheidet sich von einem normalen Erlang-Modul.
Die erste Zeile soll die Interpreter-Zeile sein, die aufruft Eskript.
Wenn Sie jedoch die aufrufen Eskript so

$ escript Fakultät 5

der Inhalt der ersten Zeile spielt keine Rolle, aber sie darf keinen Erlang-Code enthalten
da es ignoriert wird.

Die zweite Zeile im Beispiel enthält eine optionale Direktive an die Emacs Herausgeber
wodurch es in den Hauptmodus zum Bearbeiten von Erlang-Quelldateien wechselt. Wenn die
Anweisung vorhanden ist, muss sie sich in der zweiten Zeile befinden.

Wenn ein Kommentar vorhanden ist, wählen Sie die Codierung es kann in der zweiten Zeile stehen.

Hinweis:
Die durch den oben genannten Kommentar angegebene Kodierung gilt für das Skript selbst.
Die Kodierung des I/O-Servers muss jedoch explizit wie folgt eingestellt werden:

io:setopts([{Kodierung, Unicode}])

Die Standardkodierung des I/O-Servers für standard_io is Latein1 seit dem Skript
läuft in einem nicht interaktiven Terminal (siehe Die richtigen Unicode in erlang).

In der dritten Zeile (oder zweiten Zeile je nach Vorhandensein des Emacs
Direktive), ist es möglich, dem Emulator Argumente zu geben, wie z

%%! -smp enable -sname faktoriell -mnesia debug verbose

Eine solche Argumentzeile muss mit beginnen %%! und der Rest der Zeile wird interpretiert
als Argumente für den Emulator.

Wenn Sie den Standort kennen Eskript ausführbar, die erste Zeile kann direkt
gib den Weg zu Eskript. Zum Beispiel:

#!/usr/local/bin/escript

Wie jede andere Art von Skripten funktionieren auch Erlang-Skripte auf Unix-Plattformen nicht, wenn die
Ausführungsbit für die Skriptdatei ist nicht gesetzt. (Verwenden chmod +x Skriptname zum Einschalten
das Ausführungsbit.)

Der Rest der Erlang-Skriptdatei kann entweder Erlang Quelle Code, ein
inline Strahl Datei oder inline Archiv Datei.

Eine Erlang-Skriptdatei muss immer die Funktion enthalten Haupt/1. Wenn das Skript ist
laufen, die Haupt/1 Die Funktion wird mit einer Liste von Strings aufgerufen, die die
Argumente, die dem Skript übergeben werden (in keiner Weise geändert oder interpretiert).

Besitzt das Haupt/1 Funktion im Skript kehrt erfolgreich zurück, der Exit-Status für die
Skript ist 0. Wenn während der Ausführung eine Ausnahme generiert wird, wird eine kurze Nachricht
wird gedruckt und das Skript mit dem Exit-Status 127 beendet.

Um Ihren eigenen Exit-Code ungleich Null zurückzugeben, rufen Sie anhalten (ExitCode); zum Beispiel:

Lahmheit(1).

Telefon escript:script_name() aus Ihrem to-Skript, um den Pfadnamen des abzurufen
script (der Pfadname ist normalerweise, aber nicht immer, absolut).

Wenn die Datei Quellcode enthält (wie im obigen Beispiel), wird sie verarbeitet von
der Präprozessor epp. Dies bedeutet, dass Sie beispielsweise vordefinierte Makros verwenden können
(Wie z. B. ?MODUL) sowie Anweisungen wie die -include_lib Richtlinie.
Verwenden Sie zum Beispiel

-include_lib("kernel/include/file.hrl").

um die Datensatzdefinitionen für die Datensätze aufzunehmen, die von der . verwendet werden Datei:read_link_info/1
Funktion. Sie können die Kodierung auch auswählen, indem Sie hier einen Kodierungskommentar einfügen, aber wenn
In der zweiten Zeile steht ein gültiger Kodierungskommentar, der Vorrang hat.

Das Skript wird vor der Ausführung auf syntaktische und semantische Korrektheit überprüft.
Bei Warnungen (z. B. ungenutzte Variablen) werden diese gedruckt und die
Das Skript wird weiterhin ausgeführt. Bei Fehlern werden diese gedruckt und das Skript
wird nicht ausgeführt und sein Exit-Status ist 127.

Sowohl die Modulanmeldung als auch die Ausfuhranmeldung der Haupt/1 Funktion sind
optional.

Standardmäßig wird das Skript interpretiert. Sie können die Kompilierung erzwingen von
einschließlich der folgenden Zeile irgendwo in der Skriptdatei:

-mode (kompilieren).

Die Ausführung von interpretiertem Code ist langsamer als kompilierter Code. Wenn viel von
die Ausführung erfolgt in interpretiertem Code, es kann sich sogar lohnen, ihn zu kompilieren
obwohl die Zusammenstellung selbst eine Weile dauern wird. Es ist auch möglich,
liefern nativen statt kompilieren, wird das Skript mit dem nativen kompiliert
Flag, wiederum abhängig von den Merkmalen des Escripts könnte dies möglich sein oder nicht
sich lohnen.

Wie bereits erwähnt, ist es möglich, ein Skript zu haben, das vorkompilierte
Strahl Code. In einem vorkompilierten Skript ist die Interpretation des Skript-Headers
genau das gleiche wie in einem Skript, das Quellcode enthält. Das heißt, du kannst
mach ein Strahl Datei ausführbar, indem Sie der Datei die Zeilen voranstellen, die mit beginnen #!
und %%! oben erwähnt. In einem vorkompilierten Skript ist die Funktion Haupt/1 muß
exportiert.

Als weitere Option ist es möglich, ein komplettes Erlang-Archiv im
Skript. In einem Archivskript ist die Interpretation des Skriptheaders genau die
wie in einem Skript, das Quellcode enthält. Das bedeutet, dass Sie ein Archiv erstellen können
Datei ausführbar, indem Sie der Datei die Zeilen voranstellen, die mit beginnen #! und %%!
oben erwähnt. In einem Archivskript ist die Funktion Haupt/1 muss exportiert werden. Von
Standardeinstellung Haupt/1 Funktion im Modul mit dem gleichen Namen wie der Basisname des
Eskript Datei aufgerufen wird. Dieses Verhalten kann durch Setzen des Flags überschrieben werden
-eskript Haupt- Modul als eines der Emulator-Flags. Die Modul muss der Name von a . sein
Modul mit einem exportierten Haupt/1 Funktion. Sehen Code(3erl) zu weiteren Informationen und Erklärungen
über Archive und das Laden von Code.

In vielen Fällen ist es sehr praktisch, einen Header im Escript zu haben, insbesondere auf
Unix-Plattformen. Aber der Header ist in der Tat optional. Das bedeutet, dass Sie direkt
kann ein Erlang-Modul, eine Balkendatei oder eine Archivdatei "ausführen", ohne einen Header hinzuzufügen
zu ihnen. Aber dann müssen Sie das Skript wie folgt aufrufen:

$escript factorial.erl 5
Fakultät 5 = 120
$escript factorial.beam 5
Fakultät 5 = 120
$escript factorial.zip 5
Fakultät 5 = 120

escript:create(FileOrBin, Abschnitte) -> ok | {OK, binär()} | {Error, Begriff()}

Arten:

FileOrBin = filename() | 'binär'
Abschnitte = [Header] Hauptteil | Körper
Kopfzeile = Shebang | {Shebang, Shebang} | Kommentar | {Kommentar, Kommentar} |
{emu_args, EmuArgs}
Shebang = string() | 'Standard' | 'nicht definiert'
Kommentar = string() | 'Standard' | 'nicht definiert'
EmuArgs = string() | 'nicht definiert'
Body = {source, SourceCode} | {Beam, BeamCode} | {Archiv, ZipArchiv} |
{Archiv, ZipFiles, ZipOptions}
SourceCode = BeamCode = file:filename() | binär()
ZipArchiv = zip:Dateiname() | binär()
ZipDateien = [ZipDatei]
ZipFile = file:filename() | {Datei:Dateiname(), Binär()} | {Datei:Dateiname(),
binär(), file:file_info()}
ZipOptionen = [zip:create_option()]

Die erstellen/2 -Funktion erstellt ein Escript aus einer Liste von Abschnitten. Die Abschnitte können
in beliebiger Reihenfolge gegeben werden. Ein Escript beginnt mit einem optionalen Kopfzeile gefolgt von einem
Pflichtfeld Korpus. Wenn der Header vorhanden ist, beginnt er immer mit a Shebang,
möglicherweise gefolgt von a Kommentar und emu_argsdem „Vermischten Geschmack“. Seine Shebang Standardmäßig ist "/usr/bin/env
ausschreiben". Der Kommentar ist standardmäßig "Diese is an - * - erlang erhalten - * - Datei". Das erstellte
escript kann entweder als Binärdatei zurückgegeben oder in eine Datei geschrieben werden.

Als Beispiel für die Verwendung der Funktion erstellen wir ein interpretiertes escript
welche verwendet emu_args um ein Emulator-Flag zu setzen. In diesem Fall wird es deaktiviert
die smp_support. Wir extrahieren auch die verschiedenen Abschnitte aus dem neu erstellten
Skript:

> Source = "%% Demo\nmain(_Args) ->\n io:format(erlang:system_info(smp_support)).\n".
"%% Demo\nmain(_Args) ->\n io:format(erlang:system_info(smp_support)).\n"
> io:format("~s\n", [Quelle]).
%% Demo
main(_Args) ->
io:format(erlang:system_info(smp_support)).

ok
> {ok, Bin} = escript:create(binary, [shebang, comment, {emu_args, "-smp disable"}, {source, list_to_binary(Source)}]).
{ok,<<"#!/usr/bin/env escript\n%% Dies ist eine -*- erlang -*- Datei\n%%!-smp disabl"...>>}
> file:write_file("demo.escript", Bin).
ok
> os:cmd("escript demo.escript").
"False"
> escript:extract("demo.escript", []).
{ok,[{shebang,default}, {comment,default}, {emu_args,"-smp disable"},
{source,<<"%% Demo\nmain(_Args) ->\n io:format(erlang:system_info(smp_su"...>>}]}

Ein Escript ohne Header kann wie folgt erstellt werden:

> file:write_file("demo.erl", ["%% demo.erl\n-module(demo).\n-export([main/1]).\n\n", Quelle]).
ok
> {ok, _, BeamCode} = compilieren:file("demo.erl", [binary, debug_info]).
{ok, Demo,
<<70,79,82,49,0,0,2,208,66,69,65,77,65,116,111,109,0,0,0,
79,0,0,0,9,4,100,...>>}
> escript:create("demo.beam", [{beam, BeamCode}]).
ok
> escript:extract("demo.beam", []).
{ok,[{shebang,undefiniert}, {Kommentar,undefiniert}, {emu_args,undefiniert},
{Strahl, << 70,79,82,49,0,0,3,68,66,69,65,77,65,116,
111,109,0,0,0,83,0,0,0,9,...>>}]}
> os:cmd("escript demo.beam").
"True"

Hier erstellen wir ein Archivskript, das sowohl Erlang-Code als auch Beam-Code enthält.
Dann durchlaufen wir alle Dateien im Archiv und sammeln deren Inhalte und einige
Infos über sie.

> {ok, SourceCode} = file:read_file("demo.erl").
{ok,<<"%% demo.erl\n-module(demo).\n-export([main/1]).\n\n%% Demo\nmain(_Arg"...>>}
> escript:create("demo.escript", [shebang, {archive, [{"demo.erl", SourceCode}, {"demo.beam", BeamCode}], []}]).
ok
> {ok, [{shebang,default}, {comment,undefined}, {emu_args,undefined}, {archive, ArchiveBin}]} = escript:extract("demo.escript", []).
{ok,[{shebang,default}, {comment,undefiniert}, {emu_args,undefiniert},
{{Archiv,<<80,75,3,4,20,0,0,0,8,0,118,7,98,60,105,
152,61,93,107,0,0,0,118,0,...>>}]}
> file:write_file("demo.zip", ArchiveBin).
ok
> zip:foldl(fun(N, I, B, A) -> [{N, I(), B()} | A] end, [], "demo.zip").
{ok,[{"demo.beam",
{file_info,748,regulär,read_write,
{{2010,3,2},{0,59,22}},
{{2010,3,2},{0,59,22}},
{{2010,3,2},{0,59,22}},
54,1,0,0,0,0,0},
<<70,79,82,49,0,0,2,228,66,69,65,77,65,116,111,109,0,0,0,
83,0,0,...>>},
{"demo.erl",
{file_info,118,regulär,read_write,
{{2010,3,2},{0,59,22}},
{{2010,3,2},{0,59,22}},
{{2010,3,2},{0,59,22}},
54,1,0,0,0,0,0},
<<"%% demo.erl\n-module(demo).\n-export([main/1]).\n\n%% Demo\nmain(_Arg"...>>}]}

escript:extract(Datei, Optionen) -> {OK, Abschnitte} | {Error, Begriff()}

Arten:

Datei = Dateiname()
Optionen = [] | [compile_source]
Abschnitte = Kopfzeilenkörper
Header = {shebang, Shebang} {Kommentar, Kommentar} {emu_args, EmuArgs}
Shebang = string() | 'Standard' | 'nicht definiert'
Kommentar = string() | 'Standard' | 'nicht definiert'
EmuArgs = string() | 'nicht definiert'
Body = {source, SourceCode} | {Quelle, BeamCode} | {Beam, BeamCode} | {Archiv,
ZipArchiv}
SourceCode = BeamCode = ZipArchive = Binary()

Die extrahieren/2 -Funktion analysiert ein Escript und extrahiert seine Abschnitte. Dies ist das
Rückseite von erstellen/2.

Alle Abschnitte werden zurückgegeben, auch wenn sie im Escript nicht vorhanden sind. Wenn ein besonderes
Abschnitt hat zufällig den gleichen Wert wie der Standardwert, der extrahierte Wert ist
auf das Atom setzen Standard. Wenn ein Abschnitt fehlt, wird der extrahierte Wert auf den . gesetzt
Atom undefiniert.

Die compilieren_source Option wirkt sich nur auf das Ergebnis aus, wenn das escript enthält Quelle
Code. In diesem Fall wird der Erlang-Code automatisch kompiliert und {Quelle, BeamCode}
wird zurückgegeben statt {Quelle, Quellcode}.

> escript:create("demo.escript", [shebang, {archive, [{"demo.erl", SourceCode}, {"demo.beam", BeamCode}], []}]).
ok
> {ok, [{shebang,default}, {comment,undefined}, {emu_args,undefined}, {archive, ArchiveBin}]} = escript:extract("demo.escript", []).
{ok,[{{Archiv,<<80,75,3,4,20,0,0,0,8,0,118,7,98,60,105,
152,61,93,107,0,0,0,118,0,...>>}
{emu_args,undefiniert}]}

escript:script_name() -> Reichen Sie das

Arten:

Datei = Dateiname()

Die Skriptname/0 Die Funktion gibt den Namen des ausgeführten Escripts zurück. Wenn die
Wenn die Funktion außerhalb des Kontexts eines Escripts aufgerufen wird, ist das Verhalten undefiniert.

OPTIONAL AKZEPTIERT BY SCHRIFT


-C:
Kompilieren Sie das escript unabhängig vom Wert des mode-Attributs.

-d:
Debuggen Sie das Eskript. Startet den Debugger, lädt das Modul mit den Haupt/1
Funktion in den Debugger, setzt einen Breakpoint in Haupt/1 und ruft auf Haupt/1. Wenn der
Modul vorkompiliert ist, muss es explizit mit dem kompiliert werden Debug-Informationen .

-ich:
Interpretieren Sie das escript unabhängig vom Wert des mode-Attributs.

-S:
Führen Sie nur eine syntaktische und semantische Prüfung der Skriptdatei durch. Warnungen und Fehler
(falls vorhanden) werden in die Standardausgabe geschrieben, das Skript wird jedoch nicht ausgeführt. Der Ausgang
status ist 0, wenn keine Fehler aufgetreten sind, andernfalls 127.

an:
Kompilieren Sie das Escript mit dem +native Flag.

Verwenden Sie escript online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad




×
Werbung
❤ ️Hier einkaufen, buchen oder kaufen – kostenlos, damit die Dienste kostenlos bleiben.