Rubyスクリプトからコマンドが存在するかを調べる の変更点


 Rubyスクリプトからシステムのコマンドを起動するには system 関数を使うのが簡単です.mv など,起動したいコマンドが必ず存在するであろう場合は直接 system 関数で呼び出せばいいですが,コマンドがあるかどうが微妙な場合は,まず存在するかどうかを調べて条件分岐させるのがいいでしょう.
 
 たとえば,Rubyスクリプト中でpng画像をEPSファイルに変換したいとします.convert コマンドはたいてい存在しているでしょうが,bmeps コマンドはシステムにあるかどうか分かりません.この場合
 
 - bmeps コマンドが存在すれば bmeps を実行
 - 存在しなければ convert を実行
 
 という条件分岐になります.
 
  #!/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
 
 となります.
 
Valid XHTML 1.1! home > コンピュータ > プログラミング >
リロード   新規 編集 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.3.29HTML convert time to 0.003 sec.