如何使用“ coproc”与另一个命令驱动程序进行交互

乔·G

好的,显然我不是bash专家,并且需要一个!

我以前从未使用过“ coproc”,但这似乎正是我所需要的。但是,我必须承认,我不能从那里的各种“ ping”示例中推断![我尝试了几个小时...]

我要做的就是启动一个“ coproc” shell脚本,该脚本可以从标准输入中获取输入并将其结果写到标准输出中。我希望主脚本分别执行这些命令和结果的发送和处理。

这是我要执行的操作的最简单的概述之一:编辑细节更好

#! /bin/bash

coproc bkgndProc {
    /some/path/to/usefulScript.sh  maybeSomeArgsHere
}

// send command #1 to bkgndProc here
result=$(echo 'command' <&${bkgndProc[0]})    ### Doesn't work for me
echo "Did it work? $result"   ### this just prints back the 'command' I used

// here execute conditional logic based on result:
// if result1; then
//     send command #2 here, getting results
// else
//     send command #3 here, again getting results
// fi

很抱歉使用上面的伪代码,但是我不确定那些发送命令应该是什么!如果有人可以提供详细信息,将不胜感激!

控制台盒
result = $(echo 'command' <&${bkgndProc[0]})    ### Doesn't work for me

至少基本上不会起作用,因为上面有空格

result=$(echo 'command' <&${bkgndProc[0]})

----更新----

一个简单的概念可以显示在这样的脚本中:

#!/bin/bash

# create the co-process
coproc myproc {
    bash
}

# send a command to it (echo a)
echo 'echo a' >&"${myproc[1]}"

# read a line from its output
read line <&"${myproc[0]}"

# show the line
echo "$line"

输出:

a

另一个使用超时读取多行:

#!/bin/bash

coproc myproc {
    bash
}

# send a command to message 4 random numbers in 4 lines
echo 'echo "$RANDOM"; echo "$RANDOM"; echo "$RANDOM"; echo "$RANDOM"' >&"${myproc[1]}"

# keep reading the line until it times out
while read -t 1 -u "${myproc[0]}" line; do
    echo "$line"
done

输出:

17393
1423
8368
1782

如果我们使用cat,它将不再退出,因为另一端仍然有效并且已连接,并且尚未达到EOF。这就是我们使用超时的原因。

cat <&"${myproc[0]}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用构造函数将驱动程序实例传递给另一个类

来自分类Dev

如何在Debian / Ubuntu上使用专有驱动程序设置另一个桌面环境?

来自分类Dev

ro如何使用另一个程序与程序的ui交互以进行暴力攻击?

来自分类Dev

交互式绘图无法使用从另一个程序通过管道传递的输入进行初始化

来自分类Dev

如何检查当前使用的Nvidia驱动程序版本并将其切换到另一个替代版本?

来自分类Dev

如何使用 C# 驱动程序将文档移动到 MongoDB 中的另一个数据库?

来自分类Dev

如何使用C#驱动程序编写一个强类型查询过滤器,其中一个数组是MondoDB中的子数组或等于另一个数组?

来自分类Dev

如何以另一个用户身份运行交互式命令

来自分类Dev

使用c#驱动程序在MongoDB中使用此对象的另一个属性更新嵌套集合中的对象属性

来自分类Dev

如何在另一个html标签中选择带有html源的Web元素硒Web驱动程序

来自分类Dev

如何使用Java中的另一个程序执行cmd命令

来自分类Dev

创建了另一个相同的var名称后,如何与SKSpriteNode进行交互?

来自分类Dev

如何模拟来自另一个命令处理程序的命令处理程序调用

来自分类Dev

如何使用一个命令的结果多次调用另一个命令?

来自分类Dev

如何使用一个命令的输出作为另一个命令的bash完成

来自分类Dev

如何停止div中的浮动对象与另一个div中的另一个浮动对象进行交互?

来自分类Dev

如何停止div中的浮动对象与另一个div中的另一个浮动对象进行交互?

来自分类Dev

如何使bash程序接受来自另一个C程序的命令

来自分类Dev

如何在后台运行程序以及如何使用&&执行另一个命令

来自分类Dev

如何在后台运行程序以及如何使用&&执行另一个命令

来自分类Dev

如何将一个音频驱动程序与以前版本的GUI混合使用?

来自分类Dev

如何使用一个Java程序监视另一个Java程序的输出?

来自分类Dev

使用 gdb 进行调试,其中程序从另一个程序获取输入

来自分类Dev

在赛普拉斯中使用另一个命令进行更改

来自分类Dev

如何捕获由另一个应用程序启动的命令窗口的输出?

来自分类Dev

使用语音命令在android中打开另一个应用程序?

来自分类Dev

Python 3.6 尝试使用来自另一个程序的命令

来自分类Dev

这是在外壳程序脚本中使用cd和cd-命令在另一个目录中进行某些计算的好方法吗

来自分类Dev

这是在外壳程序脚本中使用cd和cd-命令在另一个目录中进行某些计算的好方法吗

Related 相关文章

  1. 1

    使用构造函数将驱动程序实例传递给另一个类

  2. 2

    如何在Debian / Ubuntu上使用专有驱动程序设置另一个桌面环境?

  3. 3

    ro如何使用另一个程序与程序的ui交互以进行暴力攻击?

  4. 4

    交互式绘图无法使用从另一个程序通过管道传递的输入进行初始化

  5. 5

    如何检查当前使用的Nvidia驱动程序版本并将其切换到另一个替代版本?

  6. 6

    如何使用 C# 驱动程序将文档移动到 MongoDB 中的另一个数据库?

  7. 7

    如何使用C#驱动程序编写一个强类型查询过滤器,其中一个数组是MondoDB中的子数组或等于另一个数组?

  8. 8

    如何以另一个用户身份运行交互式命令

  9. 9

    使用c#驱动程序在MongoDB中使用此对象的另一个属性更新嵌套集合中的对象属性

  10. 10

    如何在另一个html标签中选择带有html源的Web元素硒Web驱动程序

  11. 11

    如何使用Java中的另一个程序执行cmd命令

  12. 12

    创建了另一个相同的var名称后,如何与SKSpriteNode进行交互?

  13. 13

    如何模拟来自另一个命令处理程序的命令处理程序调用

  14. 14

    如何使用一个命令的结果多次调用另一个命令?

  15. 15

    如何使用一个命令的输出作为另一个命令的bash完成

  16. 16

    如何停止div中的浮动对象与另一个div中的另一个浮动对象进行交互?

  17. 17

    如何停止div中的浮动对象与另一个div中的另一个浮动对象进行交互?

  18. 18

    如何使bash程序接受来自另一个C程序的命令

  19. 19

    如何在后台运行程序以及如何使用&&执行另一个命令

  20. 20

    如何在后台运行程序以及如何使用&&执行另一个命令

  21. 21

    如何将一个音频驱动程序与以前版本的GUI混合使用?

  22. 22

    如何使用一个Java程序监视另一个Java程序的输出?

  23. 23

    使用 gdb 进行调试,其中程序从另一个程序获取输入

  24. 24

    在赛普拉斯中使用另一个命令进行更改

  25. 25

    如何捕获由另一个应用程序启动的命令窗口的输出?

  26. 26

    使用语音命令在android中打开另一个应用程序?

  27. 27

    Python 3.6 尝试使用来自另一个程序的命令

  28. 28

    这是在外壳程序脚本中使用cd和cd-命令在另一个目录中进行某些计算的好方法吗

  29. 29

    这是在外壳程序脚本中使用cd和cd-命令在另一个目录中进行某些计算的好方法吗

热门标签

归档