我有一个从shell运行的编译程序;当我运行它时,它要求我在stdin中输入一个文件。我想在bash循环中运行该程序,使用预定义的输入文件,例如
for i in $(seq 100); do
input.txt | ./myscript
done
但当然这不起作用。我怎样才能做到这一点?我无法编辑源代码。
答案 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
以防万一。