通过连接执行 2 个脚本

通过连接执行 2 个脚本

我遇到了一些挑战:有一个应用程序为我提供了一些后缀表达式,并期望在 5 秒内获得解决方案。如果没有解决方案,它就退出,否则,它提供额外的表达。

界面如下:

<some text>
<expression>
<expecting my result>
<next expression>
<expecting my result>

ETC。

如果只有单个表达式,我想使用tail -1命令来获取最后一行来获取表达式并使用dc命令来评估它。但是,由于表达式的数量未知(到目前为止),我无法使用它,并且必须执行一些循环,直到读取的字符串不以数字(即表达式)开头。

因此我想使用两个脚本:

  1. 启动应用程序始终将文本输出发送到 file1 并在后台执行(脚本 1)
  2. 读取脚本 file1(脚本 2)的最后一行,评估解决方案并将其发送到 file2(脚本 2)
  3. 从 file2 读取解决方案,删除 file2(用于下一个解决方案),将应用程序置于前台,发送解决方案,然后将应用程序发送到后台(脚本 1)

然而,这对我来说似乎有点复杂。

有什么建议如何简化程序来解决这个问题?

答案1

我建议研究命名管道,因为你不需要文件对于任何一个。

然而,像这样的东西:

mkfifo mypipe
script1 <mypipe | grep --line-buffered '^[0-9]' | dc >mypipe

应该接近你想要的。不过,这假设输入具有必要的p命令来dc实际打印表达式的结果。

相关内容