ルビー1.8用Shellwords.shellescape実装
質問
私が持っている1.8.7のビルドが
Shellwords::shellescape
のバックポート版を持っているように見える一方で、、私は方法は1.9の機能であり、間違いなく1.8以前のバージョンではサポートされていないことを知っています。ボーン・シェルコマンドの堅牢なスタンドアロンの実装はRuby用のエスケープ、宝石の形で、または単にスニペットのいずれかとして、私は見つけることができる場所を誰もが知っていますか?
他のヒント
あなたにもちょうどあなたが shellwordsから欲しいものをコピーするかもしれません。 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
所属していません StackOverflow