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

标签 shell unix

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

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

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

非常感谢。

最佳答案

听起来你想要这样的东西:

cat file | while read line; do
    answer=$(echo "$line" | prog)
done

这将为每一行运行一个新的 prog 实例。该行将是 prog 的标准输入,输出将放在变量 answer 中供您的脚本进一步处理。

有些人反对“cat文件|”因为这会创建一个您并不真正需要的过程。您还可以通过将其放在 done 之后来使用文件重定向:

while read line; do
    answer=$(echo "$line" | prog)
done < file

关于shell - 如何将文本发送到 shell 脚本中的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451063/

相关文章:

linux - 如何使用shell脚本从vsftpd日志中提取文件名?

linux - 当使用 ssh 作为 oracle 用户连接时以 root 身份运行脚本

shell - gnome 终端选项卡打开多个 ssh 连接

bash - UNIX 在特定列中搜索用户指定的代码并输出整行

bash - 从一列中,取每 3 个值并将它们排成一行

linux - 通过 ssh 命令将函数作为参数传递给远程服务器

unix - 在 Shell 脚本中验证变量

linux - 使用新文件名从多个目录复制多个文件

linux - 使用HDMI端口作为网络协议(protocol)接口(interface)?

delphi - 为什么当我调用 UnixToDateTime 时会得到数千年后的结果?