はじめに
シェルスクリプトでコマンドが入っていなかったらインストールするようなスクリプトが書きたかった。
メモとして残しておく
コマンドの有無による条件分岐
typeを使う
hoge.sh
if type "コマンド" > /dev/null 2>&1; then
echo "exist!" #コマンドが存在する時の処理
else
echo "NOT exist!" #コマンドが存在しないときの処理
fi
コマンドが入っていなかったらインストール
対象のコマンドが入っていなかったらインストールするときは、こう。
fuga.sh
if !(type "コマンド" > /dev/null 2>&1); then
# 対象のコマンドをインストールするような処理
fi
以上
参考
余談 - 追記(2018/02/21 13:28)
本記事のhoge.shの実装だと、「コマンドが存在するときの処理だけをgrepしにくい。」、というアドバイスをいただいた。
そういうときは、強調の「do」や「does」を使ってメッセージの識別性を高めるといった方法が有効らしい。(勉強になる...)
実装は以下の通り、ex_hoge.shif type "コマンド" > /dev/null 2>&1; then # echo "exist!" echo "do exist!" #コマンドが存在する時の処理 else echo "NOT exist!" #コマンドが存在しないときの処理 fi
参考: 運用者に優しいエラーメッセージ by @aim120g さん
@7of9 さん、アドバイスありがとうございました。