我有一个包含几个问题的bash脚本,是否可以自动填写答案?
./script.sh install
以y 2 1 n n
我怎样才能在bash中做到这一点?
编辑:是否可以只传递第一个答案?
echo "y" | install
并让用户选择回答下一个问题?
答案 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)