私はEnvoyを使用してリモートサーバーをプロビジョニングします。プロビジョニングは、プライベートレポからbashスクリプトを取り出して実行することによって行われます。
bashスクリプトは、yes / no(bash "read -p"を使用)のような確認を求めます。リモート・サーバーに接続しているときにスクリプトがユーザーの入力を待つときに期待どおりに動作します。
代わりに、エンボイはどんなプロンプトも無視するようだ。それは期待された行動ですか?
回避策はありますか?
回答:
回答№1の場合は3はい、これが期待されます。何もない read
そこから読むことはできません。
いくつかの選択肢があります。
プロンプトを出す端末がない場合は、設定ファイルを使用するようにスクリプトを書き直してください。
のようなものを使用する
[ -t 0 ]
標準入力が端末であるかどうかをテストし、デフォルトの設定ファイルをロードします。それを行う最も簡単な方法は、適切な変数の代入を含むファイルを用意して、それをソースにするだけです. defaults.sh
または何でも。あなたは、-t
最初にデフォルトを出すかどうかをテストしてください。それ以来、ユーザーが入力したものはデフォルト値を上回ります。- あなたのスクリプトを正常なデフォルトを持つように書き直してください。
- スクリプトを実行してスクリプトの入力をパイプライン/ファイル経由でリダイレクト(例:
printf "answer 1nanswer 2n" | ./script.sh
または./script.sh <answerfile
)。