Передача аргументов в интерактивную программу неинтерактивно

bash interactive non-interactive

93749 просмотра

4 ответа

У меня есть скрипт bash, который использует readкоманду для интерактивного чтения аргументов команд, например, опции да / нет. Есть ли способ вызвать этот сценарий в неинтерактивном сценарии, передавая значения параметров по умолчанию в качестве аргументов?

Это не просто один вариант, который я должен передать интерактивному сценарию.

Автор: sidharth sharma Источник Размещён: 12.11.2019 09:33

Ответы (4)


38 плюса

Решение

Для более сложных задач есть expect( http://en.wikipedia.org/wiki/Expect ). Он в основном имитирует пользователя, вы можете написать сценарий, как реагировать на конкретные программные результаты и связанные вещи.

Это также работает в тех случаях, когда sshэто запрещает передачу паролей к нему.

Автор: Dani Gehtdichnixan Размещён: 18.01.2013 10:56

137 плюса

Много способов

передать ваш вклад

echo "yes
no
maybe" | your_program

перенаправление из файла

your_program < answers.txt

используйте здесь документ (это может быть очень читабельным)

your_program << ANSWERS
yes
no
maybe
ANSWERS

используйте здесь строку

your_program <<< $'yes\nno\nmaybe\n'
Автор: glenn jackman Размещён: 18.01.2013 10:34

13 плюса

Вы можете поместить данные в файл и перенаправить их так:

$ cat file.sh
#!/bin/bash

read x
read y
echo $x
echo $y

Данные для скрипта:

$ cat data.txt
2
3

Выполнение скрипта:

$ file.sh < data.txt
2
3
Автор: Guru Размещён: 18.01.2013 04:48

7 плюса

Просто хочу добавить еще один способ. Нашел его в другом месте, и это довольно просто. Скажем, я хочу передать да для всех запросов в командной строке для команды "execute_command", тогда я просто передам "да" на него.

yes | execute_command

Это будет использовать да в качестве ответа на все запросы да / нет.

Автор: user4516335 Размещён: 24.05.2016 04:44
Вопросы из категории :
32x32