Ruby

Rubyでコマンドの存在をチェックする

More than 3 years have passed since last update.

参考 : Bash - コマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強 - Qiita

なるほどう。

TL;DR

def exists?(command)
  !`type #{command}`.empty?
end

ユーザ入力を直接渡すとかしないように。

検証

[1] pry(main)> `type wget`
=> "wget is /usr/local/bin/wget\n"
[2] pry(main)> `type hoge`
/usr/bin/type: line 4: type: hoge: not found
=> ""
[3] pry(main)> `type wget`.empty?
=> false
[4] pry(main)> `type hoge`.empty?
/usr/bin/type: line 4: type: hoge: not found
=> true