Bashスクリプトでyに自動的に応答する方法は?

Bashスクリプトでyに自動的に応答する方法は?

Bashスクリプトでいくつかのプログラムを削除したいです。コマンドを実行した後、端末から削除するかどうかを尋ねるメッセージが表示されます。だから私は答えが必要ですy。自動でy10秒遅れた後に応答したいです。

この例を作成しましたが、うまくいきません。

#!/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次に置き換えることができます。ynyes

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

多くの対話型プログラムは、特定のオプションを渡すと、特定の非対話型モードに入ることができます。問題を解決するにはあまりにも多くの努力をする前に、マニュアルを確認することをお勧めします。

おすすめ記事