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