在 linux 中,如果我想将标准错误重定向到一个文件,我可以这样做:
$ls -l /bin/usr 2> ls-error.txt
但是当我尝试时:
$foo=
$echo ${foo:?"parameter is empty"} 2> ls-error.txt
终端的结果是:
bash: foo: parameter is empty
没用!
有人可以解释为什么吗?
我认为 ${parameter:?word}
会将 word 的值发送到标准错误。
最佳答案
echo ${foo:?"parameter is empty"} 2>ls-error.txt
重定向echo
的stderr
,但是错误消息是由 shell 在展开时产生的
${foo:?"参数为空"}
。
您可以通过重定向 block (或子 shell)来获得您想要的结果,以便在重定向中包含 shell 的标准错误:
{ echo "${foo:?"parameter is empty"}"; } 2>ls-error.txt
关于linux - 如何将标准错误重定向到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43682677/