Opdrachtregelargumenten in Ruby

Veel Ruby-scripts hebben geen tekst- of grafische interfaces. Ze rennen gewoon, doen hun werk en gaan dan weg. Om met deze scripts te communiceren om hun gedrag te veranderen, moeten opdrachtregelargumenten worden gebruikt.

De opdrachtregel is de standaardmodus voor UNIX-opdrachten en omdat Ruby veel wordt gebruikt op UNIX- en UNIX-achtige systemen (zoals Linux en macOS), is het vrij standaard om dit soort programma tegen te komen.

Hoe opdrachtregelargumenten te verstrekken

Ruby-scriptargumenten worden door de shell aan het Ruby-programma doorgegeven, het programma dat opdrachten (zoals bash) op de terminal accepteert.

Op de opdrachtregel wordt elke tekst na de naam van het script beschouwd als een opdrachtregelargument. Gescheiden door spaties, wordt elk woord of elke reeks als een afzonderlijk argument doorgegeven aan het Ruby-programma. 

Het volgende voorbeeld toont de juiste syntaxis om te gebruiken om de test.rb Ruby-script vanaf een opdrachtregel met de argumenten test1 en test2.

$ ./test.rb test1 test2

U kunt een situatie tegenkomen waarin u een argument moet doorgeven aan een Ruby-programma, maar het commando bevat een spatie. In eerste instantie lijkt het onmogelijk omdat de shell argumenten over spaties scheidt, maar hier is een voorziening voor.

Alle argumenten tussen dubbele aanhalingstekens worden niet gescheiden. De dubbele aanhalingstekens worden door de shell verwijderd voordat deze aan het Ruby-programma worden doorgegeven.

Het volgende voorbeeld geeft een enkel argument door aan de test.rb Ruby-script, test1 test2:

$ ./test.rb "test1 test2"

Gebruik van opdrachtregelargumenten

In uw Ruby-programma's hebt u toegang tot alle opdrachtregelargumenten die door de shell worden doorgegeven met de ARGV speciale variabele. ARGV is een matrixvariabele die als tekenreeks elk argument vasthoudt dat door de shell wordt doorgegeven.

Dit programma herhaalt zich over de ARGV matrix en drukt de inhoud ervan af:

#! / usr / bin / env ruby ​​ARGV.elke doen | a | stopt "Argument: # a"

Het volgende is een fragment van een bash-sessie waarmee dit script wordt gestart (opgeslagen als het bestand test.rb) met verschillende argumenten:

$ ./test.rb test1 test2 "three four" Argument: test1 Argument: test2 Argument: three four