Я хотел бы сделать чат-бота с помощью удара. И я просто задавался вопросом, знает ли кто-либо в сообществе о надлежащем / предпочтительный метод для хранения ввода данных пользователем как переменная в сценарии оболочки.
Например: если мой чат-бот не распознает запрос, выполненный к нему, существует ли способ попросить, чтобы пользователь дал программе корректный ответ в будущем и затем сохранил тот ответ как переменную, не имея необходимость вручную редактировать сценарий?
Возможно, с командой чтения или подобный?
Bash не является действительно предпочтительным языком для записи приложений высокого уровня. Его преимущества находятся во взаимодействии с системными командами и автоматизацией материала, не так очень в реализации сложной бизнес-логики или выполнении материала как сети. Вы сделали бы свою жизнь легче путем изучения более соответствующего языка для этого, как, например, Python. Так или иначе конечно, возможно сделать это с Bash, просто более трудным, специально для новичка.
Таким образом для возвращения к фактическому вопросу, да, можно использовать read
окружите встроенный, чтобы запросить ввод данных пользователем и сохранить его в переменных оболочки, как:
read line
echo "You said <$line>"
Выполненный пример, включая ввод данных пользователем:
Hello there ← this is user input
You said <Hello there> ← this is the output
С этими двумя командами я сначала ожидаю одной строки ввода данных пользователем и храню его в переменной, которую я назвал $line
. Затем я могу произвести переменную снова со второй командой.
Ввести help read
получить полное описание read
команда и ее доступные варианты.
Вы могли использовать это в цикле, чтобы проверить вход и продолжать спрашивать, пока ответ не приемлем:
while [[ "$my_color" != "blue" && "$my_color" != "red" ]] ; do
read -p "Pick blue or red: " my_color
done
echo "You picked $my_color."
Выполненный пример, включая ввод данных пользователем:
Pick blue or red: green
Pick blue or red:
Pick blue or red: red
You picked red.
Существуют более изящные способы записать меню, которые предоставляют Вам выбор между многими предопределенными опциями хотя, например, использование select
. Посмотрите, Как я могу создать избранное меню в сценарии оболочки? для большего количества информации об этом.
Можно проверить некоторые руководства, как сделать избранное меню в ударе. Однако существует правило I, и другие devs/sys администраторы следуют, и это следующее: Если сценарий является дольше, чем 200 строками, переписывают в python/perl/whatever просто не, колотят. Bash не достаточно хорош для приложений высшего класса, он хорошо для взаимодействия с командами базовой системы, но это - все.