繁体   English   中英

围绕nc命令编写的bash脚本。 如何在每行之前添加文字?

[英]A bash script written around the nc command. How do I prepend text before each line?

我以一种不寻常的方式使用nc命令。 我有两个bash脚本,如果两个用户大约同时运行它们,它们将启动聊天会话。 这些脚本围绕nc命令构建。 我希望文本流显示每次回车后(当用户按Enter时)附加的值。

这些脚本是如何交互和协作地工作:在工作站1上,我调用此命令:nc -l 44444

在工作站2上,其他人调用此命令:nc xxxx 44444(其中xxxx是工作站1的IP地址)

我可以和别人聊天。 无论哪种用户类型,都将镜像到另一终端。 我的问题:如何编写bash脚本以附加文本? 我在变量中有想要的文本(例如“ said user1”)。

我希望它可以自动显示(无需用户手动输入)。

如果在聊天会话期间工作站1(IP地址为xxxx)上的用户键入“这仅是测试”,然后按Enter,我希望结果如下:

user1这只是一个测试。

如果在聊天会话期间工作站2(IP地址为yyyy)上的用户键入“哦,确定”并按Enter,我希望得到的结果是:

哦,好的,user2说。

用户名在脚本的变量中。 我可以毫无问题地构造字符串。 我只是不知道如何使此可变字符串自动显示。 仅在脚本运行时,每次按下Enter就能显示一些文本吗? 当bash脚本运行时,文本流将被镜像。 我不确定如何做到这一点。

尝试这个:

sed -u "s/$/said user2 /" | nc xxx.xxx.xxx.xxx 44444
sed -u "s/$/ said user1 /" | nc -l 44444

nc以交互方式运行(即,作为前台作业运行)时,其标准输入已连接到终端,而Bash也不能只是向其发送输入。 恕我直言,最简单的方法是(针对每一行)读取Bash中的输入并在其中添加后缀,然后将它们都通过管道传递给nc的新调用。

请记住,当从标准输入中读取时, nc将忽略文件结尾(EOF),请参阅nc(1) -q选项告诉nc在客户端EOF之后关闭连接,您可以在服务器端循环运行nc -l

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM