Ruby:
Läsa in kommandoradsargument
Hur gör man:
Ruby har en enkel och rättfram syn på kommandoradsargument genom att använda den globala arrayen ARGV
. Här är ett grundläggande exempel:
# hello.rb
puts "Hej #{ARGV[0]}!"
Kör detta genom att skriva ruby hello.rb Världen
i terminalen, och resultatet blir:
Hej Världen!
Om du vill hantera flera argument, iterera bara över ARGV
:
# greeter.rb
ARGV.each do |arg|
puts "Hej #{arg}!"
end
Kör med ruby greeter.rb Världen Universum
, skulle producera:
Hej Världen!
Hej Universum!
Fördjupning
Historiskt sett har kommandoradsargument varit en viktig del av interaktiva skript och program. I Ruby’s värld är de enkla att använda men kraftfulla och hanteras via ARGV
arrayen som automatiskt populeras med argumenten som skickas till ditt skript.
Om du behöver mer avancerad argumenthantering kan du använda inbyggda bibliotek som OptionParser
eller externa gems som Thor
för att hantera flaggor och komplexa behov.
För att förstå hur Ruby isolerar dessa argument från programmets interna variabler är det värt att notera att ARGV
och $*
är alias för samma objekt, vilket illustrerar kopplingen mellan Ruby och dess Unix-ursprung där $*
används för att referera till alla skriptargument i shell-skript.
Det kan vara frestande att använda gets.chomp
direkt för enkel indata, men undvik det här för argument som ska kunna hanteras med skriptet kallat; det är inte vad gets
är avsett för.
Se även
- Ruby’s dokumentation om ARGV: https://ruby-doc.org/core-2.7.0/ARGV.html
- Ruby’s dokumentation om OptionParser: https://ruby-doc.org/stdlib-2.7.0/libdoc/optparse/rdoc/OptionParser.html
- GitHub-sidan för Thor-gem: https://github.com/rails/thor