Viele Rubin Skripte haben keinen Text oder grafische Oberflächen. Sie rennen einfach, machen ihren Job und gehen dann. Um mit diesen Skripten zu kommunizieren und ihr Verhalten zu ändern, müssen Befehlszeilenargumente verwendet werden.
Die Befehlszeile ist der Standardbetriebsmodus für UNIX-Befehle, und da Ruby häufig verwendet wird UNIX- und UNIX-ähnliche Systeme (wie Linux und MacOS) sind ziemlich üblich Programm.
Bereitstellen von Befehlszeilenargumenten
Ruby-Skriptargumente werden von der Shell an das Ruby-Programm übergeben, dem Programm, das Befehle (z. B. Bash) auf dem Terminal akzeptiert.
In der Befehlszeile wird jeder Text, der dem Namen des Skripts folgt, als Befehlszeilenargument betrachtet. Jedes durch Leerzeichen getrennte Wort oder jede Zeichenfolge wird als separates Argument an das Ruby-Programm übergeben.
Das folgende Beispiel zeigt die richtige Syntax zum Starten von test.rb Ruby-Skript über eine Befehlszeile mit den Argumenten test1 und test2.
$ ./test.rb test1 test2
Möglicherweise tritt eine Situation auf, in der Sie ein Argument an ein Ruby-Programm übergeben müssen, der Befehl jedoch ein Leerzeichen enthält. Es scheint zunächst unmöglich, da die Shell Argumente auf Leerzeichen trennt, aber es gibt eine Bestimmung dafür.
Argumente in doppelten Anführungszeichen werden nicht getrennt. Die doppelten Anführungszeichen werden von der Shell entfernt, bevor sie an das Ruby-Programm übergeben werden.
Das folgende Beispiel übergibt ein einzelnes Argument an test.rb Ruby-Skript, test1 test2:
$ ./test.rb "test1 test2"
Verwendung von Befehlszeilenargumenten
In Ihren Ruby-Programmen können Sie mit dem Befehl auf alle von der Shell übergebenen Befehlszeilenargumente zugreifen ARGV spezielle Variable. ARGV ist eine Array-Variable, die als Zeichenfolgen jedes von der Shell übergebene Argument enthält.
Dieses Programm iteriert über die ARGVArray und druckt seinen Inhalt aus:
#! / usr / bin / env ruby. ARGV.each do | a | setzt "Argument: # {a}" Ende
Das Folgende ist ein Auszug aus einer Bash-Sitzung, in der dieses Skript gestartet wird (als Datei gespeichert) test.rb) mit einer Vielzahl von Argumenten:
$ ./test.rb test1 test2 "drei vier" Argument: test1. Argument: test2. Argument: drei vier