Muitos Rubi scripts não têm texto ou interfaces gráficas. Eles simplesmente correm, fazem seu trabalho e depois saem. Para se comunicar com esses scripts para alterar seu comportamento, argumentos da linha de comando devem ser usados.
A linha de comando é o modo padrão de operação para comandos UNIX e, como o Ruby é amplamente usado em Sistemas UNIX e UNIX-like (como Linux e macOS), é bastante padrão encontrar esse tipo de programa.
Como fornecer argumentos de linha de comando
Os argumentos do script Ruby são passados para o programa Ruby pelo shell, o programa que aceita comandos (como o bash) no terminal.
Na linha de comando, qualquer texto após o nome do script é considerado um argumento da linha de comando. Separadas por espaços, cada palavra ou sequência será passada como um argumento separado para o programa Ruby.
O exemplo a seguir mostra a sintaxe apropriada a ser usada para iniciar o test.rb Script Ruby a partir de uma linha de comando com os argumentos test1 e test2.
$ ./test.rb test1 test2
Você pode encontrar uma situação em que precisa passar um argumento para um programa Ruby, mas há um espaço no comando. Parece impossível a princípio, já que o shell separa argumentos em espaços, mas há uma provisão para isso.
Quaisquer argumentos entre aspas duplas não serão separados. As aspas duplas são removidas pelo shell antes de passá-lo para o programa Ruby.
O exemplo a seguir passa um único argumento para o test.rb Script Ruby, test1 test2:
$ ./test.rb "test1 test2"
Como usar argumentos de linha de comando
Nos seus programas Ruby, você pode acessar qualquer argumento da linha de comando transmitido pelo shell com o comando ARGV variável especial. ARGV é uma variável Array que contém, como seqüências de caracteres, cada argumento passado pelo shell.
Este programa itera sobre o ARGVmatriz e imprime seu conteúdo:
#! / usr / bin / env ruby. ARGV.each do | a | coloca "Argumento: # {a}" fim
A seguir, um trecho de uma sessão do bash iniciando esse script (salvo como o arquivo test.rb) com vários argumentos:
$ ./test.rb test1 test2 "três quatro" Argumento: test1. Argumento: test2. Argumento: três quatro