Bash脚本 - 自动填写答案

sup*_*nee 3 linux bash shell sh

我有一个bash脚本有几个问题,是否可以自动填写答案?

./script.sh install 
Run Code Online (Sandbox Code Playgroud)

答案顺序 y 2 1 n n

我怎么能用bash做到这一点?

编辑:是否可以只传递第一个答案?

echo "y" | install 
Run Code Online (Sandbox Code Playgroud)

并让用户选择回答下一个问题?

hek*_*mgl 6

我会把这里的文件传递给stdin:

./script.sh install <<EOF
y
2
1
n
n
EOF
Run Code Online (Sandbox Code Playgroud)

如果你想在一行上,你也可以使用echo:

echo -e "y\n2\n1\nn\nn" | ./script.sh install
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢这里的文档解决方案,因为它是恕我直言更具可读性.


Dav*_*ica 5

另一种方法是使用here 字符串(它的好处是消除了单行管道,但不是子外壳):

./script.sh install <<<$(printf "y\n2\n1\nn\nn\n")
Run Code Online (Sandbox Code Playgroud)

您还可以依靠 printf 技巧通过单个格式说明符打印所有元素并使用进程替换(或与上面的 here 字符串语法一起使用):

./script.sh install < <(printf "%c\n" y 2 1 n n)
Run Code Online (Sandbox Code Playgroud)