对于这个问题,我将使用grep
,因为它的使用文本会打印到stderr:
$ grep
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
你可以使用进程替代轻松捕获标准输出:
$ read b < <(echo hello world)
然而 stderr 会溜过进程替换并打印到控制台:
$ 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)
只读取第一行到 $b 变量中,而b=$(grep 2>&1)
会读取全部输出。 - finnan