■ はじめに
小ネタ。 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