2017-06-14 26 views
1

私はドッカーを学んでいます。キーツールが既に読み込まれているかどうかを調べるためにシェルテストを試みました。ドッカーをさまざまな種類のサーバーに展開するためのテストを行っています。ここでは、このケースで ツールが既にロードされているかどうかを確認するスクリプトテスト?

#!/bin/bash 
## run "$ chmod +x dockerScript.sh" to make the script executable. 
## then run "./dockerScript.sh" to activate the script 
touch docker-compose.yml 
cat > docker-compose.yml <<EOL 
version: "2" 
services: 
    (etc...) 
EOL 
if[docker-compose is not already loaded] <--- what goes here? 
then 
    curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
    chmod +x /usr/local/bin/docker-compose 
fi 

docker-compose up -d 

dockerScript.sh

として保存されたスクリプトは、ですが、私は docker-composeがロードされていることを確認したいと思います。私はそれをどうやって行うのか正確にはわかりません。

私はツールがある場合、私は$ docker-compose -vは私が成功

とのいずれかの応答として

-bash: docker-compose: command not foundまたは

bash: docker-compose: command not found

ため

docker-compose version 1.14.0-rc2, build 24dae73のような応答を取得する場合ていることがわかり私はusinているだろうLinuxのどの味が正確に応じてロードされていませんg。

docker-composeツールの存在/インストールのためにオペレーティングシステムをテストし、シェルスクリプトを完成させる方法はありますか?

+0

は/ dev/nullにstderrのからのエラー出力をリダイレクトする場合はドッキングウィンドウ・コン-v>を/ dev/null 'ん。then'が動作しませんか? – 123

+0

それは 'の'テストを使用して提案した誰かへの返信でした。 – zipzit

+0

'pgrep docker-compose'? (私は '読み込まれた'権利を理解していますか?) – hidefromkgb

答えて

1

あなたは

hash docker-compose 2>/dev/null || { echo >&2 "I require docker-compose but it's not installed."; } 

hashは、組み込みコマンドbashのあるhashコマンドを使用することができます。ハッシュテーブルはbashの機能で、メモリに結果をキャッシュしてコマンドを入力するたびに$PATHを検索する必要がありません。

hashコマンドを使用できます。あなたのシステムにhash utillityがインストールされているかどうか心配はいりません。 bashの場合はhashです。

hash some_cmd 2>/dev/null手段は

+0

私は紛失しています。ここで正確に何が起こっているのか説明できますか?ハッシュは、以前のシェルコマンドを「覚えている」ツールのようです。私はあらかじめ缶詰めされたOSシステムをたくさん試しています。ツールが未使用のOSビルドにインストールされていれば、 'ハッシュ'にはそのレコードがありますか?または、ハッシュはちょうど私がタイプしたものを覚えていますか? '2>'シンボルとは何ですか?これは正解かもしれませんが、説明がなければ、将来的には他の人にとって少しの力と価値があります。 – zipzit

+0

申し訳ありませんが、私は私の答えを説明しようとします –

+0

多くのありがとう...私のために働いているようです。そして、ええと、私はまだシェルスクリプトの内容を学んでいます。 – zipzit

関連する問題