De nombreux scripts Ruby n'ont pas d'interface texte ou graphique. Ils courent simplement, font leur travail puis sortent. Pour communiquer avec ces scripts afin de changer leur comportement, des arguments de ligne de commande doivent être utilisés.
La ligne de commande est le mode de fonctionnement standard pour les commandes UNIX, et comme Ruby est largement utilisé sur les systèmes UNIX et UNIX (tels que Linux et macOS), il est assez standard de rencontrer ce type de programme.
Les arguments du script Ruby sont transmis au programme Ruby par le shell, le programme qui accepte les commandes (telles que bash) sur le terminal.
Sur la ligne de commande, tout texte suivant le nom du script est considéré comme un argument de ligne de commande. Séparé par des espaces, chaque mot ou chaîne sera transmis comme un argument distinct au programme Ruby.
L'exemple suivant montre la syntaxe appropriée à utiliser pour lancer le test.rb Script Ruby à partir d'une ligne de commande avec les arguments test1 et test2.
$ ./test.rb test1 test2
Vous pouvez rencontrer une situation dans laquelle vous devez passer un argument à un programme Ruby mais il y a un espace dans la commande. Cela semble impossible au début car le shell sépare les arguments sur les espaces, mais il y a une disposition pour cela.
Tous les arguments entre guillemets ne seront pas séparés. Les guillemets doubles sont supprimés par le shell avant de les passer au programme Ruby.
L'exemple suivant transmet un seul argument à la test.rb Script Ruby, test1 test2:
$ ./test.rb "test1 test2"
Dans vos programmes Ruby, vous pouvez accéder à tous les arguments de ligne de commande passés par le shell avec le paramètre ARGV variable spéciale. ARGV est une variable Array qui contient, sous forme de chaînes, chaque argument passé par le shell.
Ce programme parcourt la ARGV tableau et imprime son contenu:
#! / usr / bin / env ruby ARGV.chaque do | a | met fin "Argument: # a"
Ce qui suit est un extrait d'une session bash lançant ce script (enregistré en tant que fichier test.rb) avec une variété d'arguments:
$ ./test.rb test1 test2 "trois quatre" Argument: test1 Argument: test2 Argument: trois quatre