如何在 Linux 中运行读取命令之前填充其输入?

如何在 Linux 中运行读取命令之前填充其输入?

我正在运行一个安装服务的脚本。它有几个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'

相关内容