Rask guide til kommandolinjeargumenter i Ruby

Mange Rubin skript har ingen tekst eller grafiske grensesnitt. De løper ganske enkelt, gjør jobben sin og deretter avslutter. For å kommunisere med disse skriptene for å endre oppførsel, må kommandolinjeargumenter brukes.

Kommandolinjen er standard driftsmodus for UNIX-kommandoer, og siden Ruby brukes mye på UNIX og UNIX-lignende systemer (som Linux og macOS), det er ganske standard å støte på denne typen program.

Hvordan gi kommandolinjeargumenter

Rubin skript argumenter blir sendt til Ruby programmet av skallet, programmet som godtar kommandoer (for eksempel bash) på terminalen.

På kommandolinjen regnes enhver tekst som følger navnet på skriptet som et kommandolinjeargument. Separert av mellomrom vil hvert ord eller streng bli sendt som et eget argument til Ruby-programmet.

Følgende eksempel viser riktig syntaks for å starte test.rb Rubin skript fra en kommandolinje med argumentene test1 og test2.

$ ./test.rb test1 test2

Du kan støte på en situasjon der du trenger å gi et argument til et Ruby-program, men det er et mellomrom i kommandoen. Det virker først umulig siden skallet skiller argumenter på mellomrom, men det er en bestemmelse for dette.

instagram viewer

Eventuelle argumenter i doble sitater vil ikke bli skilt. De doble sitatene fjernes av skallet før de sendes videre til Ruby-programmet.

Følgende eksempel gir et enkelt argument til test.rb Ruby manus, test1 test2:

$ ./test.rb "test1 test2"

Slik bruker du kommandolinjeargumenter

I Ruby-programmene dine kan du få tilgang til alle kommandolinjeargumenter som er sendt av skallet med ARGV spesiell variabel. ARGV er en Array-variabel som inneholder som strenger hvert argument ført av skallet.

Dette programmet iterates over ARGVmatrise og skriver ut innholdet:

#! / usr / bin / env ruby. ARGV.each do | a | setter "Argument: # {a}" slutt

Følgende er et utdrag av en bash-økt som lanserer dette skriptet (lagret som filen test.rb) med en rekke argumenter:

$ ./test.rb test1 test2 "tre fire" Argument: test1. Argument: test2. Argument: tre fire
instagram story viewer