1. ホーム
  2. shell

[解決済み】シェルスクリプトにコマンドが存在するかどうかを確認するにはどうすればいいですか?重複

2022-04-16 14:20:39

質問

私は初めてシェルスクリプトを書いています。このスクリプトでは、あるコマンドが存在するかどうかをチェックし、存在しない場合はその実行ファイルをインストールしたいと思います。このコマンドが存在するかどうかを確認するにはどうしたらよいでしょうか?

if # Check that foobar command doesnt exist
then
    # Now install foobar
fi

解決方法は?

一般的には、お使いのシェルによりますが、bash、zsh、ksh、sh(dashが提供するもの)であれば、以下のように動作するはずです。

if ! type "$foobar_command_name" > /dev/null; then
  # install foobar here
fi

実際のインストールスクリプトでは、おそらく type というエイリアスがある場合、そのエイリアスが正常に返されないことがあります。 foobar . bashではこのようにすることができます。

if ! foobar_loc="$(type -p "$foobar_command_name")" || [[ -z $foobar_loc ]]; then
  # install foobar here
fi