Zhr*_*hro 5 bash stderr subshell
我知道子 shell 的标准输出从调用者的输出中被抑制:
a=$(echo 123)
echo a:$a
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,输出:
a:123
Run Code Online (Sandbox Code Playgroud)
但是为什么 stderr 不在子 shell 中被抑制呢?
a=$(>&2 echo 123)
Run Code Online (Sandbox Code Playgroud)
预期输出:
(没有什么)
实际输出:
123
Run Code Online (Sandbox Code Playgroud)
这是一个测试,其中 stderr 应重定向到 stdout 并捕获到变量a:
a=$(>&2 echo 123 2>&1)
echo a:$a
Run Code Online (Sandbox Code Playgroud)
预期输出:
a:123
Run Code Online (Sandbox Code Playgroud)
实际输出:
123
a:
Run Code Online (Sandbox Code Playgroud)