How do I script a “yes” response for installing programs?

后端 未结 6 1680
面向向阳花
面向向阳花 2020-12-02 06:15

I work with Amazon Linux instances and I have a couple scripts to populate data and install all the programs I work with, but a couple of the programs ask:

D         


        
相关标签:
6条回答
  • 2020-12-02 06:42

    The 'yes' command will echo 'y' (or whatever you ask it to) indefinitely. Use it as:

    yes | command-that-asks-for-input
    

    or, if a capital 'Y' is required:

    yes Y | command-that-asks-for-input
    
    0 讨论(0)
  • 2020-12-02 06:45

    You might not have the ability to install Expect on the target server. This is often the case when one writes, say, a Jenkins job.

    If so, I would consider something like the answer to the following on askubuntu.com:

    https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

    printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input
    

    Note that in some rare cases the command does not require the user to press enter after the character. in that case leave the newlines out:

    printf 'yyy' | ./script_that_needs_user_input
    

    For sake of completeness you can also use a here document:

    ./script_that_needs_user_input << EOF
    y
    y
    y
    EOF
    

    Or if your shell supports it a here string:

    ./script <<< "y
    y
    y
    "
    

    Or you can create a file with one input per line:

    ./script < inputfile
    

    Again, all credit for this answer goes to the author of the answer on askubuntu.com, lesmana.

    0 讨论(0)
  • 2020-12-02 06:53

    Although this may be more complicated/heavier-weight than you want, one very flexible way to do it is using something like Expect (or one of the derivatives in another programming language).

    Expect is a language designed specifically to control text-based applications, which is exactly what you are looking to do. If you end up needing to do something more complicated (like with logic to actually decide what to do/answer next), Expect is the way to go.

    0 讨论(0)
  • 2020-12-02 06:57

    If you want to just accept defaults you can use:

    \n | ./shell_being_run
    
    0 讨论(0)
  • 2020-12-02 06:58

    You just need to put -y with the install command.

    For example: yum install <package_to_install> -y

    0 讨论(0)
  • 2020-12-02 07:03

    echo y | command should work.

    Also, some installers have an "auto-yes" flag. It's -y for apt-get on Ubuntu.

    0 讨论(0)
提交回复
热议问题