问题标签 [process-substitution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
106 浏览

bash - 为什么`>`重定向不捕获替代进程的标准输出?

回答有关管道和重定向的问题时,罗伯特提到管道还捕获管道中替代进程的标准输出,而重定向没有。为什么会这样?究竟发生了什么,导致了这种行为:

我原以为这两种形式都会产生相同的结果——后一种。

阅读另一个问题的答案,在命令中重新排序重定向可能会产生所需的结果似乎是合理的,但无论顺序如何,结果总是相同的:

为什么 stdout 重定向只影响tee,但管道也会捕获替换的进程head?只是“设计”?


只是与上述问题相关的一个想法:我认为重定向到文件管道输出永远不会有意义,但它确实对进程替换有意义:

0 投票
3 回答
441 浏览

grep - 将 Grep 与 Xargs 和进程替换一起使用

我试图通过 xargs 传递 grep 查询,同时通过进程替换传递文件。

制作虚拟文件

xargs 和 grep 的进程替换

输出是:

所需的输出是:

我认为问题在于 grep 如何接收输入文件,它在一行之后停止,而我希望它搜索整个输入文件

0 投票
1 回答
695 浏览

file-descriptor - 进程替换,/dev/fd/63

我有一个脚本,它将文件名作为 $1 中的输入,并对其进行处理......并创建一个输出文件为 ${1}.output.log,它工作正常。例如,如果我尝试了 ./myscript filename.txt

它将处理并生成名称为:filename.txt.output.log 的输出文件

但是当我尝试替换一个进程来为这个脚本提供输入时,比如 ./myscript <(echo something),它失败了,因为它不能再用 ${1} 创建一个文件。输出日志;因为现在 $1 不是一个实际文件,并且在我的工作目录中不存在脚本应该创建输出。

有什么建议可以解决这个问题吗?

0 投票
1 回答
194 浏览

bash - 使用进程替换 - 仅将 stderr 发送到文件

出于某种原因,似乎 stderr 在以下 bash 脚本中被发送到 stdout:

如果你运行它,输出是这样的:

标准输出:rolo
标准输出:标准错误:cholo

有谁知道为什么会这样?据我所知,正在发生的事情是stderr 被发送到stdout,这就是第一行捕获第二行输出的原因?

0 投票
1 回答
422 浏览

bash - 观看流程替换

我经常运行命令

Slurm 命令在哪里查看您正在运行的作业数量squeue。这给了我输出并自动告诉我有多少行。squeue

我该怎么watch做这个命令?

watch -n.1 "squeue -u $USER | tee >(wc -l)"结果是

0 投票
2 回答
268 浏览

arrays - 处理每个数组条目的替换,没有 Eval

例如,我有一个任意字符串数组a=(1st "2nd string" $'3rd\nstring\n' ...)
我想将这些字符串传递给将其参数解释为文件的命令,例如paste.

对于固定数量的变量,我们可以使用进程替换

但这只有在事先知道变量数量的情况下才有效。
对于数组a,我们可以写一些相当安全的东西,比如

出于兴趣:有没有办法在a不使用的情况下处理替换每个条目eval?请记住,a的条目可以包含任何字符(\0因为bash不支持它除外)。

0 投票
1 回答
1621 浏览

bash - 使用进程替换与管道有什么区别?

我在信息页面中遇到了 usingtee实用程序的示例:tee

我查了一下>(...)语法,发现了一个叫做“进程替换”的东西。据我了解,它使一个进程看起来像另一个进程可以写入/附加其输出的文件。(如果我在这一点上错了,请纠正我。)

这与管道有何不同?( |) 我看到在上面的例子中使用了一个管道——它只是一个优先级问题吗?还是有其他区别?

0 投票
5 回答
1482 浏览

bash - bash:等待进程替换子shell完成

bash 如何等待进程替换中使用的子shell 在以下构造中完成?(这当然是从我正在使用的真正的 for 循环和子shell 中简化的,但它很好地说明了意图。)

印刷:

代替:

如何让 bash 等待这些子shell 完成?

更新

使用进程替换的原因是我想使用文件描述符来控制打印到屏幕上的内容以及发送到进程的内容。这是我正在做的更完整的版本:

印刷:

处理每个可能需要比传输更长的时间。文件传输应该是连续的,因为带宽是限制因素。我想在收到文件后开始处理每个文件,而不是等待所有文件都传输。处理可以并行完成,但实例数量有限(由于内存/CPU 有限)。因此,如果第五个文件刚刚传输完毕,但只有第二个文件完成了处理,那么第三个和第四个文件应该在第五个文件处理之前完成处理。同时第六个文件应该开始传输。

0 投票
0 回答
17 浏览

bash - 采购和流程替代

我正在尝试获取流程替换的输出,但没有得到我期望的结果:

我本来希望BAR成为输出。有人可以告诉我我错过了什么吗?

我在运行 High Sierra (MacOs 10.13.6) 的 Mac 上。我正在使用 GNU bash,版本 4.4.23(1)-release (x86_64-apple-darwin17.5.0)。

0 投票
1 回答
2198 浏览

bash - 字符串检测时退出尾部

我正在编写一个障碍来阻止脚本的执行,直到记录了某个关键字。脚本非常简单:

或者

问题是它不会在检测到关键字后立即退出,而只会在写入下一行之后退出。IE:

不幸的是,我不能依赖在“STOP”之后将记录另一行的事实(至少不在对我的目的有用的间隔内)。

到目前为止找到的解决方法是tail另一个我知道肯定会经常更新的文件,但是什么是“干净”的解决方案,以便代码在记录STOP后立即退出?