(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
)かを判定することで、未インストールかどうかを判定しています。bashのif
は0
の時、成立します。([ $? ]
とすることで、前の実行結果が成功したかを判定します。0
以外かの判定では$?
と0
を比較しないと意図通り動きませんでした)。
else
からfi
の間には、if
が不成立だった時の処理を書きます。