Bash 脚本 - 自动填写答案

Bash script - Auto fill answer

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

./script.sh install 

按顺序回答 y 2 1 n n

我如何在 bash 中做到这一点?

编辑:是否可以只通过第一个答案?

echo "y" | install 

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

我会将 here document 传递给标准输入:

./script.sh install <<EOF
y
2
1
n
n
EOF

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

echo -e "y\n2\n1\nn\nn" | ./script.sh install

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

另一种方法是使用此处的字符串(这有利于消除单行管道,但不会消除子外壳):

./script.sh install <<<$(printf "y\n2\n1\nn\nn\n")

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

./script.sh install < <(printf "%c\n" y 2 1 n n)