mercredi 12 décembre 2007

Ruby : Argument d'un script

Il y a des choses plus difficiles que d'autres à (re)trouver quand on utilise un langage de programmation. Parmi elles, il y en a une qui m'a bien fait ramer hier soir : le pire étant que je l'avais déjà vue ! Il s'agit de la variable spéciale permettant de récupérer la ou les donnée(s) d'entrée d'un script en Ruby. Désolé, ça va piquer un peu les yeux, petit interlude "mots-clés" pour notre ami Google/Yahoo/Lycos/Mozbot/... rayez les mentions inutiles :

entrer récupérer une variable en entrée d'un script Ruby - argument d'un script Ruby - input for Ruby script - variable spéciale Ruby entrée script - special global variable in Ruby for script input - entry - program input - input entrée programme Ruby - argument en ligne de commande - argument console terminal shell Ruby - command-line arguments


==> ARGV

ARGV récupère sous forme de tableau les entrées proposées au lancement du script à la suite de son nom, séparées par des espaces, sous la forme de strings. Une image valant mille mots :

testargv.rb :

puts "class : " + (ARGV.class).to_s + \
" ; size : " + (ARGV.size).to_s
for i in ARGV
puts "input : " + i.to_s + \
" ; class : " + (i.class).to_s
end


Lançons :
$ testargv.rb
#=>class : Array ; size : 0

$ testargv.rb 5
#=>class : Array ; size : 1
#=>input : 5 ; class String
$ testargv.rb 5 toto Foo 7.2
#=>class : Array ; size : 4
#=>input : 5 ; class : String
#=>input : toto ; class : String
#=>input : Foo ; class : String
#=>input : 7.2 ; class : String
Et voilà, pour la suite, les méthodes sur les tableaux et de conversion de String devraient vous aider à profiter de cet argument.

La source : l'excellent livre :


de David Thomas et Andrew Hunt, disponible gratuitement et légalement en version électronique (Open Publication License v1.0).

3 commentaires:

Anonyme a dit…

Merci beaucoup pour cet article :)

Anonyme a dit…

J'ai un problème avec les arguments :/
En effet dès lors que je donne des arguments à mon script il me refuse tout gets. Même un simple toto = gets me renvoi une violente erreur :/

Une idée de la cause du problème ?

Sobe a dit…

Je te propose de poster ton code sur le forum "Autres langages" du site du zéro : http://www.siteduzero.com

Les quelques rubyistes du sites (dont moi ^^) se feront un plaisir de t'aider.