【Shell】シェル ~ インストール済みかどうか調べる ~

■ はじめに

小ネタ。

Github Workflow の Self-Hosted runner で

https://dk521123.hatenablog.com/entry/2024/03/01/163922

で扱った sqlfmt が command not found で見つからない
という問題が発生している。(そのまま入って実行したら問題なし)

そこで、調査の一環として、
Bashでソフトウェアがインストール済みかどうか調べる方法を
メモってみた (他にも色々あるが、、、)

目次

【1】「&> /dev/null」を使う方法
【2】commandコマンドを使う方法
 補足:commandコマンド

【1】「&> /dev/null」を使う方法

* 「【対象コマンド】 --version &> /dev/null」で確認

サンプル

#!/bin/bash

sqlfmt --version &> /dev/null
if [ $? -eq 0 ];
then
  echo "Found sqlfmt"
  which sqlfmt
  sqlfmt --version
else
  echo "sqlfmt is not supported in your env..."
fi

# [インストール済み]の場合
# Found sqlfmt
# /usr/local/bin/sqlfmt
# sqlfmt, version 0.21.2

【2】commandコマンドを使う方法

* 「command -v 【対象コマンド】」で確認

サンプル

#!/bin/bash

command -v sqlfmt
if [ $? -eq 0 ];
then
  echo "Found sqlfmt"
  which sqlfmt
  sqlfmt --version
else
  echo "sqlfmt is not supported in your env..."
fi

補足:commandコマンド

* 指定したコマンドを実行するコマンド

https://atmarkit.itmedia.co.jp/ait/articles/1912/27/news017.html

Options Explanations
-v 「コマンド」を実行せず、実行対象となるコマンドやファイル名、エイリアスの定義を表示する
-p コマンドを探すパスを指定する(通常は環境変数PATHを使用)

command がインストールされているか確認

$ command --help

参考文献

https://am1tanaka.hatenablog.com/entry/2017/10/18/220102

 関連記事

シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349