Bash脚本 - 自动填写答案

时间:2015-05-31 23:36:53

标签: linux bash shell sh

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

./script.sh install 

y 2 1 n n

的顺序回答

我怎样才能在bash中做到这一点?

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

echo "y" | install 

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

2 个答案:

答案 0 :(得分:6)

我会将here document传递给stdin:

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

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

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

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

答案 1 :(得分:3)

另一种方法是使用 here string (它具有消除单行管道但不包括子壳管的好处):

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

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

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