3

我有一个 Bash 脚本,我在其中尝试获取一个 repo,我必须按 Enter 键输入很长的 Eula 文本,实际上我必须手动按 Enter 键 20 次以上,然后输入 yes。有人可以帮我自动按回车键,最后在 bash 脚本中输入是。

yes "" | command

echo -ne '\n' | <command> 

对我不起作用,我仍然必须手动按回车键。

这是代码,所以当它运行 wget 时,我需要一直按 Enter 直到它询问您是否要接受许可证,然后我输入“是”。

#!/bin/bash

pid=$(ps aux | grep xxx-server |grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
    kill $pid
    echo -e  "\n$pid killed -Success"
fi
# Check if the package already installed then remove it

if [ `dpkg -l | grep xxx-server  | wc -l` -gt "0"  ]
then
    apt-get -y remove  xxx-server
fi
# wget the repo using silent install
if [ "apt-cache search xxx-server" ];then
#if [ $? != 0 ] ; then
        echo -e  "\nremoving repo ...."
        #aptitude install $i -y > /dev/null
         apt-get purge xxx-server-repo-* -y  > /dev/null
         echo -e  "\nInstalling Reop .........."

 yes "" | wget -q -O - http://xxx-server.com/ | sh

fi
4

2 回答 2

7

我不知道你想做什么,你最好给我们看一些代码!但很可能你想使用期望:

#!/usr/bin/expect

spawn "yourscript"

for {set i 0} {$i < 20} {incr i 1} {
    send "\n"
}
send "yes\n"
于 2013-09-10T18:53:15.050 回答
4

尽管这个问题已经很老了。这个答案可能会对某人有所帮助。

您可以使用它来为您的脚本提供输入。

cat <(echo "yes") | "Your_Command"
于 2014-04-18T13:40:42.680 回答