Argomenti della riga di comando in Ruby

Molti script Ruby non hanno interfacce testuali o grafiche. Semplicemente corrono, fanno il loro lavoro e poi escono. Per comunicare con questi script per modificarne il comportamento, è necessario utilizzare gli argomenti della riga di comando.

La riga di comando è la modalità operativa standard per i comandi UNIX e poiché Ruby è ampiamente utilizzato su sistemi UNIX e simili a UNIX (come Linux e macOS), è abbastanza standard incontrare questo tipo di programma.

Come fornire argomenti da riga di comando

Gli argomenti dello script Ruby vengono passati al programma Ruby dalla shell, il programma che accetta comandi (come bash) sul terminale.

Sulla riga di comando, qualsiasi testo che segue il nome dello script viene considerato un argomento della riga di comando. Separati da spazi, ogni parola o stringa verrà passata come argomento separato al programma Ruby. 

L'esempio seguente mostra la sintassi corretta da utilizzare per avviare il file test.rb Script Ruby da una riga di comando con gli argomenti test1 e test2.

$ ./test.rb test1 test2

È possibile che si verifichi una situazione in cui è necessario passare un argomento a un programma Ruby ma c'è uno spazio nel comando. All'inizio sembra impossibile poiché la shell separa gli argomenti sugli spazi, ma è prevista una disposizione.

Eventuali argomenti tra virgolette doppie non verranno separati. Le virgolette doppie vengono rimosse dalla shell prima di passarle al programma Ruby.

L'esempio seguente passa un singolo argomento a test.rb Sceneggiatura ruby, test1 test2:

$ ./test.rb "test1 test2"

Come utilizzare gli argomenti della riga di comando

Nei tuoi programmi Ruby, puoi accedere a qualsiasi argomento della riga di comando passato dalla shell con il ARGV variabile speciale. ARGV è una variabile Array che contiene, come stringhe, ogni argomento passato dalla shell.

Questo programma scorre il ARGV array e stampa il suo contenuto:

#! / usr / bin / env ruby ​​ARGV.each do | a | mette "Argomento: # a" fine

Di seguito è riportato un estratto di una sessione bash che avvia questo script (salvato come file test.rb) con una varietà di argomenti:

$ ./test.rb test1 test2 "tre quattro" Argomento: test1 Argomento: test2 Argomento: tre quattro