Возможно ли, чтобы скрипт bash автоматически обрабатывал подсказки, которые обычно представляются пользователю с действиями по умолчанию? В настоящее время я использую скрипт bash для вызова встроенного инструмента, который будет отображать подсказки пользователю (подсказка для Y/N) для выполнения действий, однако написанный мной сценарий должен быть полностью «отключен», поэтому Мне нужен способ отправить Y|N
в приглашение, чтобы программа продолжала выполнение. Это возможно?Есть ли сценарий ответа bash на интерактивные подсказки
ответ
Это не «автозаполнение», это автоматизация. Один общий инструмент для этих вещей называется Expect.
Вы также можете уйти от всего лишь ввода трубопровода от yes
.
К сожалению, я не могу использовать expect, поскольку они являются строгими требованиями к пространству в системе, запускающей это, поэтому я не могу добавить дополнительные пакеты, но piping 'yes' in сделал трюк, к счастью, все подсказки требовали только y ' так или иначе. Благодарю. – tj111
Однако 'Да! command' может работать не всегда. Если это просто для установки, то я упал с использованием '-y' - лучший и предпочтительный вариант. –
Простой
echo "Y Y N N Y N Y Y N" | ./your_script
Это позволит вам пройти любую последовательность «Y» или «N» к вашему сценарию.
Если мне нужно было отправить какие-либо 'N', я бы использовал этот метод, но мне нужен был только Y, поэтому я пошел с' yes'. Жаль, что я не могу принять два ответа, так как они оба правильные. – tj111
;) Хорошо, если вам когда-нибудь понадобится отправить какой-то «N», у вас теперь есть хороший способ сделать это. –
Это обходное решение блестяще для моего ленивого поведения CLI. Спасибо! – mbb
Я нашел, что лучший способ отправить ввод - использовать кошку и текстовый файл, чтобы передать все необходимые вам данные.
cat "input.txt" | ./Script.sh
Если у вас есть только Y отправить:
$> yes Y |./your_script
Если у вас есть только N отправить:
$> yes N |./yout_script
В моей ситуации мне нужно ответить на некоторые вопросы без Y или N но с текстом или пробелом. Я нашел лучший способ сделать это в моей ситуации, чтобы создать файл shellscript. В моем случае я назвал его autocomplete.sh
Мне нужно было ответить на некоторые вопросы для экспортера схемы доктрины, поэтому мой файл выглядел так.
- Это пример только -
php vendor/bin/mysql-workbench-schema-export mysqlworkbenchfile.mwb ./doctrine << EOF
`#Export to Doctrine Annotation Format` 1
`#Would you like to change the setup configuration before exporting` y
`#Log to console` y
`#Log file` testing.log
`#Filename [%entity%.%extension%]`
`#Indentation [4]`
`#Use tabs [no]`
`#Eol delimeter (win, unix) [win]`
`#Backup existing file [yes]`
`#Add generator info as comment [yes]`
`#Skip plural name checking [no]`
`#Use logged storage [no]`
`#Sort tables and views [yes]`
`#Export only table categorized []`
`#Enhance many to many detection [yes]`
`#Skip many to many tables [yes]`
`#Bundle namespace []`
`#Entity namespace []`
`#Repository namespace []`
`#Use automatic repository [yes]`
`#Skip column with relation [no]`
`#Related var name format [%name%%related%]`
`#Nullable attribute (auto, always) [auto]`
`#Generated value strategy (auto, identity, sequence, table, none) [auto]`
`#Default cascade (persist, remove, detach, merge, all, refresh,) [no]`
`#Use annotation prefix [ORM\]`
`#Skip getter and setter [no]`
`#Generate entity serialization [yes]`
`#Generate extendable entity [no]` y
`#Quote identifier strategy (auto, always, none) [auto]`
`#Extends class []`
`#Property typehint [no]`
EOF
Что мне нравится в этой стратегии вы можете прокомментировать то, что ваши ответы и используя ВФ пустую строку только что (ответ по умолчанию). Оказывается, этот инструмент экспортера имеет свой собственный JSON-аналог для ответа на эти вопросы, но я понял это после того, как сделал это =).
для запуска сценария просто в каталоге, который вы хотите, и запустите 'sh autocomplete.sh'
в терминале.
Короче говоря, используя < < EOL & EOFв сочетании с обратными линиями вы можете ответить на каждый вопрос о приглашении по мере необходимости. Каждая новая строка - это новый ответ.
Мой пример показывает, как это можно сделать с комментариями, используя символ ``, чтобы вы помнили, что такое каждый шаг.
Обратите внимание на другое преимущество этого метода: вы можете ответить более чем с Y или N ... на самом деле вы можете ответить пробелами!
Надеюсь, что это поможет кому-то.
Пожалуйста, дайте мне знать, почему downvote, это заняло много времени, чтобы узнать, что это был ответ (и был только ответом в моем случае). Я поставил его здесь, чтобы поделиться с сообществом, и он должен быть мертвым по цели для вопросителя. «Возможно ли, что скрипт bash автоматически обрабатывает подсказки, которые обычно будут представлены пользователю с действиями по умолчанию?», Да, используя то, что у меня выше, является методом для этого. –
это не «автозаполнение» ... как @unwind говорит, что это «автоматизация» – benzaita
Пример использования 'yes' для этого: http://unix.stackexchange.com/questions/47344/the-yes- command # comment65866_47344 – Droogans