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は結構別物だということがわかりました.