Kurzanleitung zu Befehlszeilenargumenten in Ruby

click fraud protection

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.

instagram viewer

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
instagram story viewer