51
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【シェルスクリプト】コマンドの有無による条件分岐

Last updated at Posted at 2018-02-21

はじめに

シェルスクリプトでコマンドが入っていなかったらインストールするようなスクリプトが書きたかった。
メモとして残しておく

コマンドの有無による条件分岐

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) さん、アドバイスありがとうございました。
51
30
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?