重複の可能性:
POSIX システムにコマンドが存在する
かどうかを確認する bash で使用可能な実行可能ファイルを見つける方法
コマンド ラインで (eg) type vimdiff
(またはマシンで使用できないwhich vimdiff
場合) と入力します。type
しかし、スクリプトでは、ユーティリティをチェックし、その可用性に応じて何らかのアクションを実行するための最も信頼できる方法は何ですか?
当面の目的は、関数を作成することですthediff
。これは、さまざまなオペレーティング システムとさまざまな種類の OS のローカルおよびリモート マシンにインストールでき、使用可能な場合は引数を p4merge に渡すことができます。 (OS X および Windows/Cygwin 環境の場合)、そうでない場合は、それが利用可能な場合はそれを使用してみてvimdiff
ください。diff
--side-by-side --suppress-common-lines --ignore-space-change
which
はフィードバックの形式が信頼できないことで知られているため、問題のユーティリティがインストールされていない場合に信頼できるかどうかはわかりません$?
。1
しかし一方で、type
インストールされていることにまったく頼ることができるかどうかはわかりません。
面倒に思えますが、最初のユーティリティを試してみて、 が$?
ゼロでない場合は次のユーティリティを試してみてください。
これは一般的にどのように扱われますか?
更新:
これに「bash」というタグを付けましたが、これは bash タグをフォローしている人々の注意を引くためだけでした。彼らは答えを知っている可能性が高いからです。私がこれまで bash しか使用していなかったとか、私が使用するすべてのシステムに bash が存在すると仮定できると暗示するつもりはありませんでした。実際、気難しいシステム管理者が Korn シェル以外を使用するのを難しくしているシステムで作業しなければなりませんでした。そして (利用可能な場合はいつでも) bash の代わりに zsh を使用します。したがって、これはbashが必要なため、bashで使用可能な実行可能ファイルを見つける方法の正確な複製ではありません。したがって、質問は異なります。さらに、利用できないシステムを使用する必要があることを明示的に述べました。すべてのクローザーは明らかにその事実を見落としていました。type
私が言及したすべてのシステムが実際にPOSIXに準拠している場合、この質問は正当に他の質問と重複している可能性があります。かどうかはわかりません。