implementação Shellwords.shellescape para Ruby 1.8
Pergunta
Enquanto a construção de 1.8.7 Tenho parece ter uma versão backported de Shellwords::shellescape
, eu sei que o método é uma característica 1,9 e definitivamente não é suportado em versões anteriores do 1.8. Alguém sabe onde eu posso encontrar, quer em forma Gem ou apenas como um trecho, uma implementação standalone robusta de comando Bourne-shell escapar para Ruby?
Solução 2
acabei indo com o Fuga gem, que tem a característica adicional de usar citações por padrão e só barra invertida-escapar quando necessário.
Outras dicas
Você pode muito bem copiar o que você quer de shellwords. rb no tronco de repositório Subversion de ruby ??(que é GPLv2 'd):
def shellescape(str)
# An empty argument will be skipped, so return empty quotes.
return "''" if str.empty?
str = str.dup
# Process as a single byte sequence because not all shell
# implementations are multibyte aware.
str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1")
# A LF cannot be escaped with a backslash because a backslash + LF
# combo is regarded as line continuation and simply ignored.
str.gsub!(/\n/, "'\n'")
return str
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow