使用命名pipe道来创build一个“循环”

我对shell脚本非常陌生,我正在努力去处理pipe道问题。 我可能在这里完全走错了方向

我有一个shell脚本包含一个简单的while循环,在这个循环内,我正在使用netcat监听指定的端口和pipe道input到一个二进制文件,通过stdin等待命令。 这是脚本-A

我有第二个shell脚本接受input作为参数,然后回声这些参数到netcat正在侦听的端口。 这是Script-B

我的目标是通过Netcat将位于Script-A的二进制文件返回到Script-B,以便通过stdout返回。 二进制文件必须被初始化并等待input。

检查string的第一个N行的bash文件

如何find一个string中的子string(或如何grep一个variables)?

如何从脚本中的文件或pipe道中select多行?

如何更改许多文件的符号链接path?

RedHat守护进程函数用法

这是我的:

脚本-A

while true; do nc -kl 1234 | /binarylocation/ --readargumentsfromstdinflag done

脚本-B

foo=$(echo "$*" | nc localhost 1234) echo "$foo"

通过这个设置,二进制文件输出是通过Script-A来完成的在做了一些研究之后,我得到了这一点,我试图使用一个命名pipe道来创build一个从二进制文件返回到netcat的循环,它仍然不工作 –

脚本-A

mkfifo foobar while true; do nc -kl 1234 < foobar | /binarylocation/ --readargumentsfromstdinflag > foobar done

脚本B没有改变。

请记住,我的shell脚本经验在大约一天的时间内就会结束,谢谢。

用bash捕获输出和交互式程序的input

如何在LINUX中实现AJAX(interactive)类SEARCH查找文件

获取目录中的最新文件

为什么陷阱没有奏效

一个进程已经启动后,grep过滤输出

问题出在你的脚本B中。netcat从STDIN中读取并在STDIN关闭时立即退出,而不是等待响应。

你会意识到,当你这样做:

foo=$( ( echo -e "$*"; sleep 2 ) | nc localhost 1234) echo "$foo"

nc有一个stdin行为的参数。

-q after EOF on stdin,wait the specified number of seconds and then quit. If seconds is negative,wait forever.`

所以你应该这样做:

foo=$( echo -e "$*" | nc -q5 localhost 1234) echo "$foo"

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...