それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ruby でコマンドをエスケープする方法

Rubyでコマンドを実行しようとすると、困ることがある。

これははエラーになる。

#!/usr/bin/env ruby
`md5sum 2012-06-04(cygwin).key` 

正しくは次の形

#!/usr/bin/env ruby
` md5sum 2012-06-04\(cygwin\).key `

カッコはエスケープしてないと解釈されない

だけど変数はどうする?

#!/usr/bin/env ruby
name = "プレゼン資料(cygwin),key"
` md5sum #{name}`

この場合何処でエスケープしたらいいの。。。


require 'shellwords'で解決!?

#!/usr/bin/env ruby
require 'shellwords'
name = "プレゼン資料(cygwin),key"
` md5sum #{name.shellescape}`

でも日本語が残念な感じ

日本語の扱いが残念な感じで、無理でした。