微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用命名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"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐