2011-10-04 25 views
53

私はアマゾンのLinuxインスタンスで動作し、私はデータを移入し、私が一緒に働くすべてのプログラムをインストールするためのカップルのスクリプトを持っていますが、プログラムのカップルが尋ねる:プログラムのインストールに「はい」という応答をスクリプト化するにはどうすればよいですか?

Do you want to continue [Y/n]? 

をして、インストールを一時停止。私はすべての場合に "Y"という答えを自動的に出したいと思っています。

+3

パッケージマネージャには、使用できる '--noprompt'または' --noconfirm'フラグがあります。 – Blender

答えて

87

'yes' commandは、「y」(またはあなたが求めるもの)を無期限にエコーします。

yes | command-that-asks-for-input 

や、資本「Y」が必要とされている場合:

yes Y | command-that-asks-for-input 
+0

これは、yesからの入力を使用するためにサポートされているコマンドでのみ動作しますか? OpenStackから一見してみましたが、これはうまくいかず、すべての状況に対してExpectがより正確になったと思います。 – HVNSweeting

+1

//完全な単語「はい」を入力する必要がある場合はどうなりますか? –

+2

@ NathanBasaneseコマンド 'yes yes'を実行してください。 – Dylan

3

これはもっと複雑で重いかもしれませんが、非常に柔軟な方法の1つはExpect(または別のプログラミング言語の派生物)のようなものを使用しています。

Expectは、テキストベースのアプリケーションを制御するために特別に設計された言語であり、まさにあなたが探しているものです。あなたが何かもっと複雑なことをする必要が生じたら(実際に何をやるか/次に答えるかを決めるロジックのように)、期待は行く方法です。

32

echo y | commandが有効です。

また、一部のインストーラには「auto-yes」フラグがあります。 Ubuntuでapt-getの場合は-yです。

+0

私はエコーをやろうとしています "giturl no" | jspmレジストリは、私のシェルスクリプトでregistry_name jspm-gitを作成します。しかしそれは失敗を続けます。ギュールに入っている間。何か案が? – manismku

+0

別の例:docker-composeには、何かを削除するコマンドに "auto-yes"として機能する '-f'(' --force')フラグがあります。 – luke

+0

プロンプトが表示された場合に再帰的に "echo Y"一回以上の確認? –

7

//、あなたがターゲット・サーバー上で期待インストールする機能を持っていないかもしれないとして、それを使用してください。 これは、たとえばJenkinsの仕事を書くときによくあることです。

もしそうなら、私はaskubuntu.comに次のような答えのようなものを検討する:まれにコマンドを入力押すようにユーザーを必要としないことhttps://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input 

文字の後に。その場合には改行を省略:

printf 'yyy' | ./script_that_needs_user_input 

は完全を期すために、あなたもここで文書を使用することができます

./script <<< "y 
y 
y 
" 

./script_that_needs_user_input << EOF 
y 
y 
y 
EOF 

またはシェルはそれをここに文字列をサポートしている場合

また、1行に1つの入力ファイルを作成することもできます。

./script < inputfile 

この回答のクレジットはaskubuntu.com、@lesmanaの回答者に送られます。

+0

//この回答が好きな人はaskubuntu.comのユーザー@lesmanaにアップアップをしてください。 –

関連する問題