【发布时间】:2015-06-19 12:42:08
【问题描述】:
编者注:OP 最终希望从this answer 打包代码 作为脚本。所述代码创建了一个保持打开的 FIFO,后台命令从该 FIFO 读取数据以在数据到达时进行处理。
如果我在终端中键入它会起作用,但如果我在脚本文件中输入这些命令并运行它,它将不起作用。
#!/bin/bash
cat >a&
pid=$!
程序好像卡在cat>a&
$pid运行脚本后没有任何值,但cat进程似乎存在。
【问题讨论】:
-
你想捉什么猫? 'a' 将为空。
-
当然
pid在脚本退出后 不会有值——所有的shell 变量,就其本质而言,当shell 退出时就会消失。脚本退出 -> 运行脚本的 shell 退出 -> 不再有变量。 -
@Prabhu 我正在尝试为问题的答案编写脚本。仅当我在终端中逐行输入时才有效serverfault.com/questions/443297/…–
-
这是哪个版本的 bash?如果您真正想要的是一个协同进程(根据链接,它看起来很可能),那么现代(4.x)版本的 bash 实现这种效果的方式要少得多。
-
@CharlesDuffy:假设我对 OP 正在尝试做的事情是正确的(请参阅我的回答):我看不到使用
coproc的方法,但我很好奇如果你能想到一个。
标签: bash shell background-process jobs fifo