98得票5回答
将stdout输出捕获到一个变量中,但仍在控制台显示

我有一个调用了几个长时间运行进程的bash脚本。我希望捕获这些调用的输出到变量中以进行处理。但是,由于这些是长时间运行的进程,我想要rsync调用的输出在控制台上实时显示,而不是事后显示。 为此,我找到了一种方法(链接),但它依赖于将文本输出到/dev/stderr。 我认为输出到/dev/s...

21得票3回答
Bash进程替换和同步

在一些Bash单元测试脚本中,我使用以下技巧来记录并显示命令的标准输出和标准错误输出:(可能与某些程序不接受输入文件的进程替换有关)command > >(tee "${stdoutF}") 2> >(tee "${stderrF}" >&2) 这个过程会...

17得票4回答
使用管道将进程替换的退出代码传递到while循环中

以下脚本调用另一个程序并在 while 循环中读取其输出(请参见 Bash - 如何将输入导向 while 循环并在循环结束后保留变量): while read -r col0 col1; do # [...] done < <(other_program [args ....

17得票4回答
命令替换和进程替换的区别

我正在尝试理解这两个类似命令之间的差异。aa=$(foo | bar | head -1) read aa < <(foo | bar | head -1) 我知道<()需要#!/bin/bash,但这会使它变慢吗? 它们创建相同数量的子shell吗? 它们需要相同数量的b...

15得票5回答
如何在Bash中找到下一个可用的文件描述符?

如何在Bash中判断文件描述符是否正在使用?例如,如果我有一个读取、写入和关闭fd 3的脚本。exec 3< <(some command here) ... cat <&3 exec 3>&- 如何最好地确保我的脚本不会干扰在我脚本运行之前可能已经设置...

15得票1回答
为什么在bash 3.2中,使用进程替换时source命令不起作用?

我有以下的 shell 脚本:cat <(echo foo) source <(echo bar=bar) echo $bar 然而在 GNU bash 3.2 和 4.3 中,它的工作方式有所不同,如下所示:$ /bin/bash foo.sh foo 3.2.53(1)-r...

14得票1回答
POSIX shell中等效于<()的内容

&lt;(commands ...) 在bash/zsh中将输出的行为变成文件。是否存在POSIX等效命令?

12得票4回答
使用进程替换出现语法错误的shell脚本

我有一个用于备份系统的shell脚本,其中有一行代码:tar -Pzcpf /backups/backup.tar.gz --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups --exclu...

11得票2回答
为什么 `cat <(cat)` 会产生 EIO 错误?

我有一个同时从两个输入文件读取数据的程序。我想让这个程序从标准输入读取数据。我打算使用类似以下的代码:$program1 &lt;(cat) &lt;($program2) 但我刚刚发现cat &lt;(cat) 产生.... mmap2(NULL, 139264, PROT_READ|PRO...

10得票3回答
进程替换捕获stderr

对于这个问题,我将使用grep,因为它的使用文本会打印到stderr:$ grep Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. 你可以使用进程替代轻松捕获标准输出:$ rea...