Lesen von Kommandozeilenargumenten

Ruby:
Lesen von Kommandozeilenargumenten

Wie geht das?

Ruby macht es einfach, auf Befehlszeilenargumente zuzugreifen – sie werden in einem speziellen Array namens ARGV gespeichert.

# script.rb
puts "Anzahl der Argumente: #{ARGV.length}"
puts "Die Argumente sind: #{ARGV.join(', ')}"

# Ausführen mit: ruby script.rb diese sind test daten
# Erwartete Ausgabe:
# Anzahl der Argumente: 4
# Die Argumente sind: diese, sind, test, daten

Kurz und knapp, ARGV enthält die Werte, fertig. Das war’s eigentlich schon.

Deep Dive

In älteren Zeiten hatten Programmierer es nicht so einfach. Sie mussten komplizierte Wege gehen, um Zugriff auf Befehlszeilenargumente zu bekommen. In Ruby hingegen ist die Standardbibliothek seit jeher unser Freund.

Alternativen zu ARGV gibt es auch: Die OptionParser-Bibliothek zum Beispiel hilft, wenn es um komplexere Aufgaben geht, etwa wenn man Argumente mit Schaltern (Flags) braucht oder verschiedene Optionen hat.

Intern speichert Ruby die Argumente, die du in deiner Konsole eingibst, in dem globalen Array ARGV, bevor das Skript überhaupt startet. Die Argumente werden als Strings behandelt, also denk dran, sie umzuwandeln, falls du Zahlen oder ähnliches brauchst.

# argument_conversion.rb
number_arguments = ARGV.map(&:to_i)
puts "Zahlen addiert: #{number_arguments.reduce(:+)}"

# Ausführen mit: ruby argument_conversion.rb 10 20 30
# Erwartete Ausgabe:
# Zahlen addiert: 60

Hier kam die map-Methode zum Zug, um jedes Argument in eine Zahl umzuwandeln, und reduce, um diese zu addieren.

Siehe auch