Я запускаю скрипт, который устанавливает сервис. У него есть пара команд read
.
Я хотел бы запустить его как часть более крупного установочного скрипта (на самом деле capistrano, но это не имеет значения) и предварительно заполнить "прочитанные" части значениями, а не блокировать весь процесс.
Сценарий запускается с помощью одной команды, скажем, blah/bin/blah install
, я хотел бы предоставить входные данные для команды, такие как input first_input, second_input | blah/bin/blah install
Соответствующие части сценария:
if [[ $NEO4J_USER == $wrapper_user ]]; then
default_user=$wrapper_user
else
default_user="neo4j"
fi
######### read:
read -p "Graph-like power should be handled carefully. What user should run Neo4j? [$default_user] " proposed_user
proposed_user=${proposed_user:-$default_user}
if ! `id $proposed_user &> /dev/null` ; then
######### read:
read -p "User \"$proposed_user\" does not yet exist. Shall I create the account for you? [Yn]" yn
case $yn in
[Nn]* ) echo "WARNING: Alright, but Neo4j will fail to launch until that user has been created."
set_user $proposed_user
;;
* ) create_user $proposed_user
;;
Весь сценарий находится на http://pastebin.com/RpJZciXq
Я знаю, что могу изменить скрипт, но я просто хочу предварительно заполнить значения. Является ли это возможным?
Ну, на самом деле, это имело значение, что я использую capistrano, потому что он имеет возможность отправлять ввод (см. Раздел &block
).
Но интересно знать, существует ли упомянутая мной функциональность и в bash.