Pergunta

Gostaria de executar um comando do sistema operacional a partir do meu script Ruby, mas quero adicionar um argumento de uma variável Ruby.

Eu sei que isso é possível usando a palavra-chave sistema assim :

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory

mas isso é possível usando a "sintaxe de crases ou crases"?(Quero dizer, usando essa sintaxe: ls)

Foi útil?

Solução

Não, isso apenas concatenará a saída de ls e o conteúdo de directory.

Mas você pode fazer isso:

#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`

Outras dicas

`ls #{directory}` 

não é muito seguro porque você terá problemas com nomes de caminhos que contenham espaços.

É mais seguro fazer algo assim:

directory = '/home/paulgreg/'

args = []
args << "/bin/ls"
args << directory

system(*args)

Nick está certo, mas não há necessidade de montar os argumentos por partes:

directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top