
シェル スクリプトを使用してプログラムのインストールを自動化しようとしています。コマンド ラインからのユーザー操作 (確認、はい/いいえなど) が必要な手順がいくつかあります。これを回避する最善の方法は何でしょうか。1 つの方法は、expect スクリプトを使用することだとわかっています。これを実行するより優れた/よりクリーンな方法があるかどうかを知りたいだけです。
答え1
対話が単純な場合、つまり標準入力から読み取るだけの場合は、特定の行をプログラムの入力に送信するだけです。
( echo yes ; echo 1024; echo yes ) | install.sh
答え2
stdinから読み込むだけではない何か(例えばftpログイン)をしたい場合は、期待する。
答え3
別のスレッドから:
コマンドが入力の速さを気にせず、実際にコマンドと対話する必要がない場合は、ヒアドキュメントを使用できます。
例:
#!/bin/bash
command_you_want_to_execute <<EOD
interaction_1
intereaction_2
EOD
プログラムの出力に基づいて分岐する必要がある場合、またはプログラムがコマンドのタイミングに敏感な場合は、Expect が最適です。