Rubyスクリプトからシステムのコマンドを起動するには system 関数を使うのが簡単です.mv など,起動したいコマンドが必ず存在するであろう場合は直接 system 関数で呼び出せばいいですが,コマンドがあるかどうが微妙な場合は,まず存在するかどうかを調べて条件分岐させるのがいいでしょう.
たとえば,Rubyスクリプト中でpng画像をEPSファイルに変換したいとします.convert コマンドはたいてい存在しているでしょうが,bmeps コマンドはシステムにあるかどうか分かりません.この場合
という条件分岐になります.
#!/usr/bin/env ruby cmd = ARGV.shift if open("| which #{cmd} 2>/dev/null"){|f| f.gets} puts "exist" else puts "not exist" end
したがって最終的に
#!/usr/bin/env ruby cmd = "bmeps" if open("| which #{cmd} 2>/dev/null"){|f| f.gets} bmeps file.png file.eps else convert file.png file.eps end
となります.