コマンドが存在するか調べる

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

となります.

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.006 sec.