Pikaopas komentoriviargumentteihin Rubyssa

monet Rubiini skripteissä ei ole tekstiä tai graafiset rajapinnat. He vain juoksevat, tekevät työnsä ja poistuvat sitten. Kommunikointiin näiden komentosarjojen kanssa niiden käyttäytymisen muuttamiseksi on käytettävä komentoriviargumentteja.

Komentorivi on UNIX-komentojen tavanomainen toimintatapa, ja koska Rubya käytetään laajasti UNIX- ja UNIX-kaltaiset järjestelmät (kuten Linux ja macOS) ovat melko tavanomaisia ​​kohtaamaan tämäntyyppiset järjestelmät ohjelmoida.

Kuinka toimittaa komentoriviargumentit

Kuori välittää Ruby-komentosargumentit Ruby-ohjelmaan, ohjelma, joka hyväksyy komennot (kuten bash) terminaalissa.

Komentorivillä mitä tahansa komentosarjan nimeä seuraavaa tekstiä pidetään komentoriviargumenttina. Erotettuna välilyönteillä, jokainen sana tai merkkijono siirretään erillisenä argumenttina Ruby-ohjelmalle.

Seuraava esimerkki näyttää oikean syntaksin, jota käytetään test.rb Ruby-komentosarjan komentoriviltä argumentit test1 ja test2.

$ ./test.rb test1 test2

Voit kohdata tilanteen, jossa joudut siirtämään argumentin Ruby-ohjelmalle, mutta komennossa on tilaa. Aluksi se näyttää mahdottomalta, koska kuori erottaa väitteet välilyönneistä, mutta tähän on varaus.

instagram viewer

Kaikkia kaksoislainausmerkkejä koskevia argumentteja ei eroteta. Tuplalainaukset poistaa kuori ennen siirtämistä Ruby-ohjelmaan.

Seuraava esimerkki välittää yhden argumentin test.rb Ruby-kirjoitus, testi1 testi2:

$ ./test.rb "test1 test2"

Kuinka käyttää komentoriviargumentteja

Ruby-ohjelmissa voit käyttää kaikkia komentoriviargumentteja, jotka kuori on ohittanut argv erityinen muuttuja. argv on taulukkomuuttuja, joka pitää merkkijonona jokaista kuoren ohittamaa argumenttia.

Tämä ohjelma toistuu argvryhmä ja tulostaa sen sisällön:

#! / usr / bin / env ruby. ARGV.each do | a | asettaa argumentin: # {a} pää

Seuraava on katkelma bash-istunnosta, joka käynnistää tämän komentosarjan (tallennetaan tiedostona) test.rb) useilla perusteilla:

$ ./test.rb test1 test2 "kolme neljä" Väite: testi1. Väite: testi2. Väite: kolme neljä