2016-12-29 9 views
1

Я работаю над сценарием оболочки, который имеет множество сетевых вызовов и установок. Когда он выполняется, мне нужно ввести yes/no для каждого приглашения. Это нормально.Обнаружение и ввод ввода в приглашение в сценарии оболочки

Но теперь у меня есть требование запустить его как cron. В этом случае я не смогу предоставить данные для каждого приглашения, которое появляется. Есть ли способ автоматизировать это или иметь некоторый механизм знания в скрипте, который вызвал подсказку?

+1

Как насчет вашего редизайна вашего сценария для принятия параметров, чтобы он не нуждался в действии пользователя? –

ответ

3

Используйте команду yes ответить интерактивные подсказки,

yes Y | ./script.sh 

выше синтаксис постоянно помещает строку Y все ваши запросы. Вы можете передать строку, как вам нужно, после yes.

Вы также можете использовать инструмент expect, предназначенный для этого, но вам необходимо знать точное приглашение для получения и ответа на него соответствующим образом. Если ваше приглашение простое и просто требуется простой ввод для передачи yes, это будет правильным инструментом.

Также вы можете использовать bash встроенный printf, но вам нужно добавить ответы вручную в зависимости от количества запросов, на которые вы должны ответить, например.

printf 'Y\nY\nY\n' | ./script.sh 

отправить ответ, как Y три подсказки. Как опять же, чтобы избежать этого вручную, предпочитайте использовать команду yes.

 Смежные вопросы

  • Нет связанных вопросов^_^