web-dev-qa-db-ja.com

プログラムをインストールするための「はい」応答をスクリプト化するにはどうすればよいですか?

Amazon Linuxインスタンスを使用し、データを入力して作業するすべてのプログラムをインストールするためのスクリプトがいくつかありますが、いくつかのプログラムは次のように尋ねます。

Do you want to continue [Y/n]?

インストールを一時停止します。すべての場合に自動で「Y」と答えたいのですが、どうすればいいのかがわかりました。

90
user974887

'yes'コマンド は、 'y'(または要求するもの)を無期限にエコーします。次のように使用します。

yes | command-that-asks-for-input

または、大文字の「Y」が必要な場合:

yes Y | command-that-asks-for-input
173
P.T.

echo y | commandは動作するはずです。

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

57
Dennis

ターゲットサーバーにExpectをインストールできない場合があります。これは多くの場合、ジェンキンスの仕事を書くときです。

もしそうなら、私はaskubuntu.comで次の答えのようなものを検討します:

https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

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

まれに、このコマンドではユーザーが文字の後にEnterキーを押す必要がないことに注意してください。その場合、改行は省略します。

printf 'yyy' | ./script_that_needs_user_input

完全を期すために、hereドキュメントも使用できます。

./script_that_needs_user_input << EOF
y
y
y
EOF

または、シェルがhere文字列をサポートしている場合:

./script <<< "y
y
y
"

または、1行に1つの入力があるファイルを作成できます。

./script < inputfile

繰り返しになりますが、この回答のすべての功績は askubuntu.comの回答 、lesmanaの著者に帰属します。

14
Nathan Basanese

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

Expectは、テキストベースのアプリケーションを制御するために特別に設計された言語であり、まさにあなたが求めているものです。より複雑なこと(実際に次に何をする/答えるのかを実際に決定するロジックなど)が必要になった場合は、Expectが最適です。

5
Adam Batkin

デフォルトをそのまま使用する場合は、次を使用できます。

\n | ./Shell_being_run
3
warhansen

Installコマンドで-yを入力するだけです。

例:yum install <package_to_install> -y

0
Rohan Seth