ホーム DoRuby rubyで外部コマンド実行

rubyで外部コマンド実行

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

rubyからOSのコマンドやシェルなどの、外部コマンドを

実行する方法としていくつかあるようですので簡単にご紹介します。

バッククォートを使う

#!/usr/bin/ruby

result = `ls -lh`

単純な実行ならコレ。

system

#!/usr/bin/ruby

result = system(“ls -lh”)

print result

結果に真偽値が返ってきます。

exec

#!/usr/bin/ruby

begin

exec(“ls -lh”)

rescue

puts “error”

end

Kernelモジュール内。rescueでrubyの例外を拾えるのが特徴。

open

#!/usr/bin/ruby

result = open(“| ls -lh”)

print result.class # => IO

while !result.eof

print result.gets

end

result.close

ファイルのIOを行うときにopenを使いますが

引数のコマンドの前に「|」パイプを付けると、外部コマンドの実行が可能になります。

実行される外部コマンドの処理を非同期実行や子プロセスにするかなど、

の考慮が必要になりますので、要件に応じて使いわけると良いでしょう。

その他、open3やpopenを使うなど方法もあります。

環境:ruby 1.8.6

記事を共有

最近人気な記事