LoginSignup
3
3

More than 1 year has passed since last update.

POSIX や bash でコマンドが存在するか確認する関数(which でない)

Last updated at Posted at 2019-02-22

コマンドのインストール前にインストール済みか確認したい。できれば POSIX 互換にしたい。

インストーラーのスクリプトを書く際に、事前に必須コマンドが導入されているかチェックしたかったのです。

一般的に which コマンドが使われますが、POSIX 準拠コマンド一覧には which がありません

which より確実なのあったなぁ、なんだっけかなぁ」と、ここ1年で作成/更新された Qiita 記事を「bash 関数 コマンド 存在 確認」でググっても(タイトルから)ピンポイントでわかる情報がみつかりませんでした。いや、1年以上前の未更新記事ならたくさんあるのですが、自分のググラビリティとして。

TL;DR

which でなければ type コマンドです

TS;DR

関数
#!/usr/bin/env bash

function existsCmd () {
    type -a $1 > /dev/null 2>&1
}
用途
if ! existsCmd bash; then
    echo 'bash does not exist'
    exit $LINENO
fi
echo 'bash exists'

if existsCmd hoge; then
    echo 'hoge exists'
    exit $LINENO
fi
echo 'hoge does not exist'

if ! existsCmd fuga; then
    echo 'fuga does not exist'
    exit $LINENO
fi
echo 'fuga exists'
実行結果
bash exists
hoge does not exist
fuga does not exist

参考文献&あわせて読みたい

3
3
0

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
3
3