type
と&&
,||
を使う。
成果物
コード
type "確認したいコマンド名" > /dev/null 2>&1 && echo "存在する"
たとえば以下のように使う。diff
コマンドが存在するとき、存在する
と表示する。
type "diff" > /dev/null 2>&1 && echo "存在する"
改良
IsExistCmd() { type "$1" > /dev/null 2>&1; }
IsExistCmd 存在確認したいコマンド名 && 存在したときの処理 || 存在しなかったときの処理
使用パターン
IsExistCmd diff && echo "ある" ! IsExistCmd diff && echo "ない" IsExistCmd diff && echo "ある" || echo "ない"
処理内容を複数行にしたいときは以下。
IsExistCmd diff && { echo "アル"; echo "アル"; } || { echo "ナイ"; echo "ナイ"; }
用途
- インストール済みコマンドによって処理内容を変更する
- インストールコマンドを実行する
情報源
知りたいことが全部書いてある。感謝。
疑問 | 解答 |
---|---|
> /dev/null 2>&1 とは? |
stderr をstdout へ出して破棄する |
なぜif 文なしにチェックできる? |
終了コード$? を見ているから |
所感
こういうの調べるだけで時間とられる。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux