Muchos scripts de Ruby no tienen texto ni interfaces gráficas. Simplemente corren, hacen su trabajo y luego salen. Para comunicarse con estos scripts para cambiar su comportamiento, se deben usar argumentos de línea de comandos.
La línea de comandos es el modo de operación estándar para los comandos UNIX, y dado que Ruby se usa ampliamente en sistemas UNIX y similares a UNIX (como Linux y macOS), es bastante estándar encontrar este tipo de programa.
El shell, el programa que acepta comandos (como bash) en el terminal, pasa los argumentos del script Ruby al programa Ruby..
En la línea de comandos, cualquier texto que siga al nombre del script se considera un argumento de línea de comandos. Separados por espacios, cada palabra o cadena se pasará como un argumento separado al programa Ruby.
El siguiente ejemplo muestra la sintaxis adecuada para usar para iniciar test.rb Script de Ruby desde una línea de comandos con los argumentos prueba1 y prueba2.
$ ./test.rb test1 test2
Puede encontrar una situación en la que necesita pasar un argumento a un programa Ruby pero hay un espacio en el comando. Al principio parece imposible ya que el shell separa los argumentos en los espacios, pero hay una disposición para esto..
Cualquier argumento entre comillas dobles no se separará. El shell elimina las comillas dobles antes de pasarlo al programa Ruby.
El siguiente ejemplo pasa un único argumento a la test.rb Guión de rubí, prueba1 prueba2:
$ ./test.rb "prueba1 prueba2"
En sus programas Ruby, puede acceder a cualquier argumento de línea de comandos que pase el shell con el ARGV variable especial. ARGV es una variable de matriz que contiene, como cadenas, cada argumento pasado por el shell.
Este programa itera sobre el ARGV matriz e imprime su contenido:
#! / usr / bin / env ruby ARGV.each do | a | pone "Argumento: # a" final
Lo siguiente es un extracto de una sesión bash que inicia este script (guardado como el archivo test.rb) con una variedad de argumentos:
$ ./test.rb test1 test2 "three four" Argumento: test1 Argumento: test2 Argumento: tres cuatro