Як заповнити введення команди читання в Linux перед його запуском?


1

Там я запускаю сценарій, який встановлює службу. Він має пару 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.

Відповіді:


1

read читає з stdin за замовчуванням. Просто годуйте щось там.

echo -e '\n\n' | blah/blah/blah install

blah/blah/blah install <<< $'\n\n'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.