所以我有一个Linux程序在一个while(true)循环中运行,它等待用户输入,处理它并将结果打印到stdout。
我想编写一个打开此程序的shell脚本,从txt文件中提取行,一次一行,并将每行的程序输出保存到文件中。
所以我想知道是否有任何命令:
- 打开一个程序
- 将文本发送到流程
- 从该程序接收输出
非常感谢。
答案 0 :(得分:1)
听起来你想要这样的东西:
cat file | while read line; do
answer=$(echo "$line" | prog)
done
这将为每一行运行prog
的新实例。该行将是prog
的标准输入,输出将放在变量answer
中,以便脚本进一步处理。
有些人反对“猫文件”因为这会创建一个您真的不需要的过程。您也可以将文件重定向放在done
:
while read line; do
answer=$(echo "$line" | prog)
done < file
答案 1 :(得分:1)
你看过pipes and redirections了吗?您可以使用管道将输入从一个程序提供给另一个程序。您可以使用重定向将文件内容发送到程序,和/或将输出写入文件。
答案 2 :(得分:1)
我假设您想要一个用bash编写的脚本。
|
或<
传递文本(从文件中获取输入)>
将输出重定向到某个文件,也可以>>
重定向,但是附加结果而不是截断文件要在bash中实现你想要的,你可以写:
#/bin/bash
cat input_file | xargs -l1 -i{} your_program {} >> output_file
这会为your_program
中的每一行调用input_file
,并将结果附加到output_file