给定前导、foobar函数及其调用:
exec 3>/dev/null
function foobar { echo foo; echo bar >&2; }
foobar >/dev/null
foobar 2>/dev/null
foobar &>/dev/null
foobar &>&3为什么Bash不执行最后一个简单的命令?相反,Bash退出了:
-bash: syntax error near unexpected token `&'发布于 2012-11-26 00:16:03
这是因为没有运算符&>&。
有一个操作符&> word将stdout和stderr重定向到word。
有一个操作符[n]>& word从fd word复制fd n (默认1)。作为特例,如果n为空,而word不是数字,则将stdout和stderr重定向到word。
但仅此而已。文件描述符没有一个特殊的语法,可以与操作符组合。只有运算符,可以将它们的操作数解释为文件描述符或文件名。而且没有一个&>&操作符可以重定向stdout和stderr,并将其右操作数解释为文件描述符。
摘要:文件描述符没有特殊的语法&n。&属于运算符,而不是操作数。没有操作员&>&。
发布于 2012-11-26 00:08:21
为什么呢?“. &>file”只是“…>file 2>&1”的语法糖。没别的了。如果要使描述符2点指向3 (/dev/null),则需要使用“. 2>&3”。
https://unix.stackexchange.com/questions/56679
复制相似问题