Stručný sprievodca argumentmi príkazového riadku v Ruby

veľa rubín skripty neobsahujú text alebo grafické rozhrania. Jednoducho bežia, robia svoju prácu a potom odchádzajú. Na komunikáciu s týmito skriptmi, aby sa zmenilo ich správanie, sa musia použiť argumenty príkazového riadku.

Príkazový riadok je štandardný režim činnosti pre príkazy UNIX a keďže sa Ruby bežne používa UNIX a systémy podobné UNIX (napríklad Linux a MacOS), je celkom bežné stretnúť sa s týmto typom program.

Ako poskytnúť argumenty príkazového riadku

Argumenty skriptu Ruby sú odovzdávané programu Ruby shellom, programom, ktorý prijíma príkazy (napríklad bash) na termináli.

Na príkazovom riadku sa za argument z príkazového riadku považuje akýkoľvek text nasledujúci za názvom skriptu. Oddelené medzerami sa každé slovo alebo reťazec odovzdá ako samostatný argument programu Ruby.

Nasledujúci príklad ukazuje správnu syntax, ktorá sa má použiť na spustenie systému test.rb Ruby skript z príkazového riadku s argumentmi test1 a test2.

$ ./test.rb test1 test2

Môžete sa stretnúť so situáciou, keď musíte odovzdať argument programu Ruby, ale v príkaze je medzera. Najprv sa to zdá nemožné, pretože shell oddeľuje argumenty o medzerách, ale existuje ustanovenie.

instagram viewer

Žiadne argumenty v úvodzovkách sa neoddelia. Dvojité úvodzovky sú odstránené shellom pred jeho odovzdaním do programu Ruby.

Nasledujúci príklad odovzdáva jediný argument test.rb Ruby skript, test1 test2:

$ ./test.rb "test1 test2"

Ako používať argumenty príkazového riadku

Vo svojich programoch Ruby máte prístup ku všetkým argumentom príkazového riadku odovzdaným prostredím pomocou príkazu argv špeciálna premenná. argv je premenná Array, ktorá ako reťazce uchováva každý argument odovzdaný prostredím.

Tento program iteruje cez internet argvrad a vytlačí jeho obsah:

#! / usr / bin / env ruby. ARGV.each to | a | vloží „Argument: # {a}“ koniec

Nasleduje výňatok z relácie bash spúšťajúcej tento skript (uložený ako súbor test.rb) s rôznymi argumentmi:

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