自动将stdin发送到交互式bash脚本

时间:2013-11-26 17:31:39

标签: bash interactive

我有一个从shell运行的编译程序;当我运行它时,它要求我在stdin中输入一个文件。我想在bash循环中运行该程序,使用预定义的输入文件,例如

for i in $(seq 100); do
    input.txt | ./myscript
done

但当然这不起作用。我怎样才能做到这一点?我无法编辑源代码。

3 个答案:

答案 0 :(得分:2)

尝试

for i in $(seq 100); do
    ./myscript < input.txt
done

管道(|)是进程间。也就是说,它们在进程之间流动。您要找的是file redirection(例如<>等。)

  

重定向只是意味着捕获文件,命令的输出,   脚本中的程序,脚本甚至代码块并将其作为发送方式发送   输入到另一个文件,命令,程序或脚本。

您可能会看到cat用于此cat file | mycommand。鉴于上述情况,这种用法是多余的,通常是“Useless use of cat”奖项的获胜者。

答案 1 :(得分:0)

您可以使用:

./myscript < input.txt

input.txt

stdin上发送myscript的内容

答案 2 :(得分:0)

根据您的评论,myscript 提示显示文件名,并且您希望始终使用input.txt进行回复。你试过这个吗?

for i in $(seq 100); do
    echo input.txt | ./myscript
done

您可能想先试试这个:

echo input.txt | ./myscript

以防万一。