tanaka's Programming Memo

プログラミングについてのメモ。

Linux(やmacで)のbashでインストール済みか確認する方法

(2018/4/5 根本的に間違っていたっぽいので修正)

安PCのセットアップスクリプトで、インストールとアップデートを自動的に処理できるように、bashシェルスクリプトでインストール済みかの確認方法を調べました。

例えば、PHPがインストールされているかは以下のような感じ。

php -v &> /dev/null
if [ $? -ne 0 ] ; then
  echo 未インストール
else
  echo インストール済み
fi

コマンドの意味

記号だけだとよくわからないので、それぞれの意味。

php -v

phpのバージョンチェックです。このようにバージョンチェックなどを実行して、それが成功するか、失敗するかを試します。

&> /dev/null

php -vが返すメッセージは不要なので、標準出力、エラーのいずれも破棄しています。&>が標準出力、エラーのいずれもリダイレクトするコマンド、/dev/nullは送られてきたメッセージを破棄する記述です。

if [ $? -ne 0 ] ; then

$?は、先に実行されたコマンドの実行結果を返します。成功の時は0、失敗時は0以外が返ります。これが0以外(-ne)かを判定することで、未インストールかどうかを判定しています。bashif0の時、成立します。[ $? ]とすることで、前の実行結果が成功したかを判定します。(0以外かの判定では$?0を比較しないと意図通り動きませんでした)。

elseからfiの間には、ifが不成立だった時の処理を書きます。

参考URL