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}`
でも日本語が残念な感じ
日本語の扱いが残念な感じで、無理でした。