私はAmazon Linuxインスタンスを使用しており、データを入力して使用するすべてのプログラムをインストールするスクリプトがいくつかありますが、いくつかのプログラムは次のように質問します。
Do you want to continue [Y/n]?
インストールを一時停止します。すべてのケースで「Y」と自動応答したいのですが、どうしたらよいかがわかりました。
私はAmazon Linuxインスタンスを使用しており、データを入力して使用するすべてのプログラムをインストールするスクリプトがいくつかありますが、いくつかのプログラムは次のように質問します。
Do you want to continue [Y/n]?
インストールを一時停止します。すべてのケースで「Y」と自動応答したいのですが、どうしたらよいかがわかりました。
回答:
「はい」コマンドは、「Y」をエコーします(または、あなたはそれを聞いて何でも)無期限。次のように使用します。
yes | command-that-asks-for-input
または、大文字の「Y」が必要な場合:
yes Y | command-that-asks-for-input
yes
CPUを最大にすることが知られているので注意してください。 stackoverflow.com/a/18164007/720665
-y
、bashスクリプトのグーグルはハードでした。
/dev/null
STDOUT などの制限なしに何かを書き込んでいる場合にのみ当てはまります。コマンドにパイプされると、受信コマンドが1を読み取るたびにパイプに1行だけを書き込み、それ以外の場合は待機します。
echo y | command
うまくいくはずです。
また、一部のインストーラーには「auto-yes」フラグがあります。それはだ-y
ためにapt-get
Ubuntuの上。
-f
(--force
)フラグがあり、何かを削除するコマンドの「自動はい」として機能します
ターゲットサーバーにExpectをインストールする機能がない可能性があります。これは、たとえばJenkinsの仕事を書くときによく見られます。
もしそうなら、私はaskubuntu.com上の次の答えのようなものを検討します:
/ubuntu/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
完全を期すために、ヒアドキュメントを使用することもできます。
./script_that_needs_user_input << EOF
y
y
y
EOF
または、シェルがhere文字列をサポートしている場合:
./script <<< "y
y
y
"
または、1行に1つの入力を含むファイルを作成することもできます。
./script < inputfile
繰り返しになりますが、この回答のクレジットはすべて、askubuntu.com での回答の作成者であるlesmanaに帰属します。
デフォルトをそのまま使用したい場合は、以下を使用できます。
\n | ./shell_being_run
bash
、sh
私が知っているほとんどのシステムでecho
は、\n
それ以外の場合は次のコマンドにパイプされない必要があります。
--noprompt
or--noconfirm
フラグがある場合があります。