使用多行输入从shell脚本运行linux程序

时间:2013-11-20 16:41:03

标签: linux shell

我想从脚本运行一个特定的程序,通常会让用户输入一些信息(多次)。

例如,当我在shell中启动程序时,我的输入将是:

t [ENTER]
3 [ENTER]
12 [ENTER]
e [ENTER]

其中一个必须在程序想要下一个输入的每一行之后等待。

我想有一个像

这样的解决方案
echo t | prog
echo 3 | prog
echo 12 | prog
echo e | prog

但是在第一行之后,由于空缓冲区,程序在没有输入的情况下运行。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

此文档的Prime用例:

prog <<EOF
t
3
12
e
EOF

答案 1 :(得分:2)

猜猜这取决于您使用的是哪种shell。使用bash,您可以echo多行,例如

$ echo "t
> 3
> 12
> e" | prog

答案 2 :(得分:0)

read命令读取一行,以换行符结束。您可以在echo中包含换行符:

echo "t\n3\n12\ne" | prog