OSのコマンドをRubyから実行する

tips_02

OSのコマンドをRubyから実行する

困ったこと

OSのコマンドや別のツールをRubyから実効する方法が分からん。

前提

  • ruby 1.9.2p320
  • コマンドの終了ステータスを受け取る必要あり

解決策

systemメソッドを用意する。(lsコマンドを例にとる)

command.rb

# coding: utf-8
puts "ls -lを実行します"
system("ls -l ./command.rb")    # 存在するファイル(正常終了)
status = $?.exitstatus              # => 0
puts "終了コード : #{status}"

puts "ls -lを実行します"
system("ls -l ./command.none")  # 存在しないファイル(異常終了)
status = $?.exitstatus              # => 1
puts "終了コード : #{status}"

command.log

mba:ipass 7010oncajon$ ruby command.rb 
ls -lを実行します
-rw-r--r--@ 1 7010oncajon  staff  377  8 27 23:39 ./command.rb
終了コード : 0
ls -lを実行します
ls: ./command.none: No such file or directory
終了コード : 1

感想

  • とても便利
  • やり方は他にもあるようだ、