Sök…


Hur man skriver ett kommandoradsverktyg för att få vädret med postnummer

Detta kommer att vara en relativt omfattande handledning om hur man skriver ett kommandoradsverktyg för att skriva ut vädret från postnumret till kommandoradsverktyget. Det första steget är att skriva programmet i rubin för att göra denna åtgärd. Låt oss börja med att skriva en weather(zip_code) (Den här metoden kräver yahoo_weatherman pärla. Om du inte har denna pärla kan du installera den genom att skriva gem install yahoo_weatherman från kommandoraden)

require 'yahoo_weatherman'

def weather(zip_code)
  client = Weatherman::Client.new
  client.lookup_by_location(zip_code).condition['temp']
end

Vi har nu en mycket grundläggande metod som ger vädret när ett postnummer tillhandahålls. Nu måste vi göra detta till ett kommandoradsverktyg. Låt oss mycket snabbt gå igenom hur ett kommandoradsverktyg kallas från skalet och tillhörande variabler. När ett verktyg kallas som detta tool argument other_argument , finns det i rubin en variabel ARGV som är en matris lika med ['argument', 'other_argument'] . Låt oss nu implementera detta i vår ansökan

#!/usr/bin/ruby
require 'yahoo_weatherman'

def weather(zip_code)
  client = Weatherman::Client.new
  client.lookup_by_location(zip_code).condition['temp']
end 
 
puts weather(ARGV[0])

Bra! Nu har vi ett kommandoradsprogram som kan köras. Lägg märke till she-bang- linjen i början av filen ( #!/usr/bin/ruby ). Detta gör att filen blir en körbar. Vi kan spara den här filen som weather . ( Obs! Spara inte detta som weather.rb , det finns inget behov av filändelsen och hon-bang berättar vad du behöver för att berätta att det här är en rubinfil). Nu kan vi köra dessa kommandon i skalet (skriv inte in $ ).

$ chmod a+x weather
$ ./weather [ZIPCODE]

Efter att ha testat att detta fungerar kan vi nu sym-länka detta till /usr/bin/local/ genom att köra detta kommando

$ sudo ln -s weather /usr/local/bin/weather

Nu kan weather kallas på kommandoraden oavsett katalog du befinner dig i.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow