mbuffer在接收端完成时,它会打印出时间和速度,我想进入$time$speed
试图实现this答案

#!/bin/bash
exec 3>&1 4>&2 #set up extra file descriptors
error=$( { mbuffer -v 0 -4 -s 128k -m 1G -I 8023 3>&1 4>&2 > /tank3/fs5/tst; } )
exec 3>&- 4>&- # release the extra file descriptors
echo "The message is \"${error}\""

执行此操作并在另一个终端中执行
echo secret | mbuffer -4 -s 128k -m 1G -O localhost:8023

我明白了
# ./fff

summary:  0.0 KiByte in  0.1 sec - average of  0.0 KiB/s
The message is ""
secret

我希望看到""之间的摘要消息。
问题
我假设在将STDOUT管道传输到文件时,摘要消息必须打印到STDERR,并且其内容是正确的。
有人知道我做错了什么吗?

最佳答案

我认为你可能试图采用错误的解决方案。你提到的那个解决了一个比较复杂的问题。如果您的目标是将stdout指向一个文件并捕获stderr,那么应该这样做(是的,将stderr映射到stdout然后将stdout映射到一个文件是违反直觉的,但这就是重定向的工作原理,您将stream 2发送到stream 1此时指向的位置,这就是stdout)

error=$(mbuffer -v 0 -4 -s 128k -m 1G -I 8023 2>&1 > /tank3/fs5/tst)
echo "The message is \"${error}\""

关于linux - 将stderr从mbuffer获取到变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15977302/

10-10 17:39