Bashスクリプトでいくつかのプログラムを削除したいです。コマンドを実行した後、端末から削除するかどうかを尋ねるメッセージが表示されます。だから私は答えが必要ですy
。自動でy
10秒遅れた後に応答したいです。
この例を作成しましたが、うまくいきません。
#!/usr/bin
/opt/MNG/MNGVIEWHP/fe/uninstall
sleep 10
echo "y"
どんなアイデアがありますか?セントース7.2
ベストアンサー1
これがこのyes
コマンドの目的です。 1行に1つずつ出力さy
れるため、はい/いいえ、質問を求めるコマンドにパイプすることができます。
yes | /opt/MNG/MNGVIEWHP/fe/uninstall
これはy
すべての質問に対する答えです。n
すべての質問に答えるにはに置き換えますyes
。事前定義されているとの組み合わせをyes n
次に置き換えることができます。y
n
yes
printf '%s\n' y n n y y n...
または、以下を実行してください。
/opt/MNG/MNGVIEWHP/fe/uninstall << 'EOF'
y
n
n
y
y
n
EOF
10秒以内に回答を読むことができないようにしたい場合は、次のようにします。
(sleep 10; echo y; sleep 2; echo n;...) | /opt/MNG/MNGVIEWHP/fe/uninstall
y
しかし、これは必要ないかもしれません。パイプに書き込むとき、パイプはuninstall
必要に応じて読み取ることができるので、読み取る準備ができるまで待つ必要はありません。uninstall
質問をする前に入力を更新することにした場合は例外です。
これらすべては、uninstall
コマンドが単に各回答を標準入力の入力行として読み取ると仮定します。
コマンドがttyデバイスから直接応答を読み取るか、または条件付きで応答を提供する必要がある(たとえば、コマンド出力の内容に応じて)、より複雑な場合は、またはなどをexpect
使用zsh
できますzpty
。
多くの対話型プログラムは、特定のオプションを渡すと、特定の非対話型モードに入ることができます。問題を解決するにはあまりにも多くの努力をする前に、マニュアルを確認することをお勧めします。