ruby execメソッド

2022.08.03

execメソッドとは

引数で指定されたコマンドを実行します。プロセスの実行コードはそのコマンド(あるいは shell)になるので、起動に成功した場合、このメソッドからは戻りません。

Ruby3.1

コマンドを実行してくれる。コマンド実行後の処理は実行されない。

外部コマンドの実行ということなのでOSのコマンドを実行できる。

特徴

OSコマンドを実行できる。コマンド一覧

exec 'date' #=> 2022年 8月 3日 水曜日 07時55分38秒 JST

exec 'touch hoge.rb' #実行後にlsするとファイルが作られているのことがわかります。

execメソッドを実行するとその後の処理は実行されない。

p "実行前"
exec 'echo "実行中"'
p "実行後" #表示されない
exec 'echo "実行中2"' #表示されない

#=> "実行前"
#=> 実行中

ちなみにevalメソッドとの違い

exec・・コマンド実行。コマンド実行後の処理は実行されない。

eval・・文字列やブロックを実行。実行後も処理は続く。

まとめ

ターミナルコマンドを実行できるので、ファイル操作をしたいときに使えそうです。ただコマンド実行後は処理が行われないことに注意です。

evalとexecは結構別物だということがわかりました.