如何将文本发送到shell脚本中的进程?

时间:2010-03-15 22:59:34

标签: shell unix

所以我有一个Linux程序在一个while(true)循环中运行,它等待用户输入,处理它并将结果打印到stdout。

我想编写一个打开此程序的shell脚本,从txt文件中提取行,一次一行,并将每行的程序输出保存到文件中。

所以我想知道是否有任何命令:
     - 打开一个程序
   - 将文本发送到流程
   - 从该程序接收输出

非常感谢。

3 个答案:

答案 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编写的脚本。

  1. 要打开文件,您只需输入一个名称。
  2. 要将文字发送到某个程序,您可以通过|<传递文本(从文件中获取输入)
  3. 要接收输出,您可以使用>将输出重定向到某个文件,也可以>>重定向,但是附加结果而不是截断文件
  4. 要在bash中实现你想要的,你可以写:

    #/bin/bash
    
    cat input_file | xargs -l1 -i{} your_program {} >> output_file
    

    这会为your_program中的每一行调用input_file,并将结果附加到output_file