2017-04-09 14 views
0

PHPCIというツールからDockerイメージを作成しようとしています。私はほとんどすべてを行うことができましたが、最初の問題は、スクリプトの作成データベース、セットアップユーザ名/パスワード、およびツール自体のための何らかのデフォルト設定を実行する必要があるときに表示されます。bashスクリプトが対話型のプロンプトに応答する方法(y/nのみ)?

スクリプトが(see here - 作曲からのインストール)と呼ばれるべきである。

php ./console phpci:install 

そして、それはいくつかの質問を求め始めます。私は、コンテナの開始後に簡単にそれらを読むことができるように、私はENV変数でこれらのパラメータのほとんどを格納しています

****************** 
Welcome to PHPCI 
****************** 

Checking requirements... OK 

Please answer the following questions: 
------------------------------------- 

Please enter your MySQL host [localhost]: 
Please enter your MySQL database name [phpci]: 
Please enter your MySQL username [phpci]: 
Please enter your MySQL password: 
Your PHPCI URL ("http://phpci.local" for example): http://phpci.localdomain 
Use beanstalkd to manage build queue? <yes|no> 
Skipping beanstalkd configuration. 
Setting up your database... OK 
Admin Email: <email> 
Admin Name: <user_name> 
Admin Password: 
User account created! 

:これが求められているものの完全な例です。またはさらに良いものはARGです。私の質問は、ENV変数から値を読み取るためにインストールスクリプトを作成する方法です。

多くの回答がありますが、それらのほとんどはyes|noの質問のために簡単ですが、私はこの問題に関して役立つものは何も見つかりませんでした。どんな援助も大歓迎です。あなたがtmpを実行し、シェルにそれらを貼り付ける場合は、この取得します

tmp() 
{ 
    var=fred 
    tmp2 << EOD 
$var 
EOD 
} 

tmp2() 
{ 
    read var2 
    echo $var2 
} 

> tmp 
fred 

を「ヒアドキュメント」構文を使用すると、含めることができます

+1

heredocまたは 'expect'以外のものはありますか? –

+0

@ IgnacioVazquez-Abramsあなたは[this](http://expect.sourceforge.net/)について話していますか? – ReynierPM

+0

それは一つでしょう。 –

答えて

2

は、これら2つのテストスクリプトを考えてみましょうプログラム後のスクリプトのプロンプトへの応答。だから何をしたいのですか?

php ./console phpci:install <<EOD 
$HOST 
$DATABASE 
$USERNAME 
$PASSWORD 
[ ... etc ... ] 
EOD 

それはあなたのためにそれを行う必要があります。変数の代わりにハードコードされた値を含めることもできます。

heredoc at Wikipediaの詳細については、こちらをご覧ください。

希望すると便利です。

関連する問題