はじめに
シェルスクリプトでコマンドが入っていなかったらインストールするようなスクリプトが書きたかった。
メモとして残しておく
コマンドの有無による条件分岐
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.sh
if type "コマンド" > /dev/null 2>&1; then
# echo "exist!"
echo "do exist!" #コマンドが存在する時の処理
else
echo "NOT exist!" #コマンドが存在しないときの処理
fi
> 参考: [運用者に優しいエラーメッセージ](https://qiita.com/aim120g/items/3445b34039a8dafaf57a) by [@aim120g](https://qiita.com/aim120g) さん
> [@7of9](https://qiita.com/7of9) さん、アドバイスありがとうございました。