Ось для чого призначена yes
команда. Він виводить y
s по одному на рядок нескінченно, так що його можна передати командам, які задають питання "так" або "ні".
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
s zpty
.
Зауважте, що багато інтерактивних програм можуть увійти в деякий неінтерактивний режим, коли передано якусь опцію. Ви можете спочатку перевірити їх посібник, перш ніж витрачати занадто багато зусиль на вирішення проблеми.
#! /bin/bash -
а не#!/usr/bin