- ベストアンサー
シェルスクリプトからコマンド存在検査をするには?
シェルスクリプト内で「コマンド(コマンドラインツール)の存在検査」をする方法を伺っても宜しいでしょうか? testコマンドで実験してみましたが、残念乍ダメでした。 環境:Cygwin(bash)、WinXP Pro 全パッチあて 以上どうぞ宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
「PATHの通ったところにmakeコマンドがあるか」つまり「フルパスを指定しなくともmakeコマンドが実行できるか」ということを確認したのですよね多分。 test コマンドは、コマンドの有無でなくファイルの有無しか確認できません。 真っ当にやるなら、PATHを : で分解して、各ディレクトリにmakeがあるか順番に見ていきます。 IFS=: ARI=false for d in $PATH do test -x $d/make && ARI=true done if $ARI then echo コマンドあり else echo コマンド無し fi bashであればtypeコマンドを使うのが楽でしょう。 if type -P make >/dev/null then echo コマンドあり else echo コマンド無し fi
その他の回答 (4)
Path 以外にあるコマンドは、whichでは見つかりません。
- ishi7474
- ベストアンサー率32% (71/216)
whichのmanページがなぜか私のCygwinに入っていないので確実なことは 言えませんが、whichコマンドの戻り値が0ならコマンドは存在します。
コマンドというより 普通にファイルが有るか検査するのと同じifで良いんじゃない?
補足
if[ -e make ] のような感じでやってみましたが、ifの評価式は常にfalseでした。 makeはインストール済です。
- Tacosan
- ベストアンサー率23% (3656/15482)
「コマンド (ラインツール) の存在検査」とは, 何をしたいのでしょうか? test をどのように使って, どのような結果を期待したところどのような結果が得られたのでしょうか?
補足
>何をしたいのでしょうか? コマンドのインストール検査です。 ある仕事をするシェルスクリプトがあるとします。 先頭部で、その仕事に必要なコマンド(ツール)全てが揃っているかを検査、揃っていなければメッセージを出して終了、という工程をやる為の物です。 makeのインストール検査を行う為、test -f make を実行しましたが、結果はtestの結果はfalse(0)でした。
お礼
全く仰る通りです。 ご提示頂いた前者のコードでうまくいきました。どうも有難うございました。