有没有办法让bash脚本处理使用“write”命令发送给它的消息?例如,如果用户想要在我的脚本中激活一个功能,我是否可以使用它来使用write命令向脚本发送命令?
我想到的一种可能的方法是为屏幕会话配置日志记录,然后让bash脚本解析文本,但我不确定是否会有更简单或更有效的方法来解决这个问题
编辑:我正在考虑作为替代解决方案,我可以使用命名管道。我担心如果tmp分区完全填满它会破坏(不确定这是否会影响写入?)。我将在共享的盒子上运行这个脚本,并且每隔一段时间就会有人完全填满/ tmp分区,然后就这样离开,直到人们开始抱怨答案 0 :(得分:0)
嗯,你正试图真正规避一个糟糕的unix命令来问它没有指定的东西。从手册页(强调我的):
写入实用程序允许您通过复制与其他用户进行通信 从您的终端到他们的线路
这意味着写入旨在直接在终端上复制行。一旦你说,我将使用屏幕转储终端输出,然后解析转储文件,你松开了写入的简单性(并且还需要磁盘空间,存在从顺序文件中删除旧行的问题)
更糟糕的是,由于你的脚本独立存在,它可以(应该?)是一个附加到无终端的守护进程脚本
因此,如果我正确理解了您的问题,您的要求是:
write
很适合那部分,但很难接口恕我直言如果您不想通过使用标准工具在该部分上浪费时间,我会推荐邮件系统。将邮件地址别名为将使用邮件消息作为输入调用的程序是微不足道的。但我不确定这是否值得,因为用户可以直接使用请求作为输入或命令行参数调用该程序。
因此,客户端部分可能只是一个程序:
mkstemp
是C或C ++中的朋友,或者是shell中的mktemp
- 但要注意竞争条件)