对于这个问题,我将使用grep
,因为它的使用文本打印到stderr进程替换捕获标准错误
$ grep
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
你可以用进程替换标准输出轻松捕捉
$ read b < <(echo hello world)
但是标准错误滑过过程替换并打印到控制台上
$ read b < <(grep)
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
我想用流程替换捕获stderr。我现在用这个
$ grep 2> log.txt
$ read b < log.txt
但我希望避免临时文件。通过使用$()
$ read "b" < <(grep 2>&1)
$ echo "$b"
Usage: grep [OPTION]... PATTERN [FILE]...
虽然常规方式将一个命令的输出保存到在击一个变量是:
你几乎是对的。你的流程替换中有一个不必要的';'。这就是为什么你需要';同步“来解决这个问题。试试:'grep 2>>(sed's/e/E/g')',然后你将直接输出结果。 –