Для этого и нужна yesкоманда. Он выводит по 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команда просто читает каждый ответ как одну строку ввода со своего стандартного ввода.
Для более сложных случаев, когда команда читает ответы непосредственно с терминала , устройства или где вам нужно кормить ответы условно (например , на основе каких командных результатов), то, где вы бы использовать такие вещи , как expectи zsh«s zpty.
Обратите внимание, что многие интерактивные программы могут переходить в неинтерактивный режим, когда передается некоторая опция. Вы можете сначала проверить их руководство, прежде чем тратить слишком много усилий на решение проблемы.
#! /bin/bash -а не#!/usr/bin