首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Bash不接受`&>&3`,即将stdout和stderr重定向到文件描述符3?

为什么Bash不接受`&>&3`,即将stdout和stderr重定向到文件描述符3?
EN

Unix & Linux用户
提问于 2012-11-25 23:38:09
回答 2查看 445关注 0票数 0

给定前导、foobar函数及其调用:

代码语言:javascript
复制
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退出了:

代码语言:javascript
复制
-bash: syntax error near unexpected token `&'
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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&属于运算符,而不是操作数。没有操作员&>&

票数 4
EN

Unix & Linux用户

发布于 2012-11-26 00:08:21

为什么呢?“. &>file”只是“…>file 2>&1”的语法糖。没别的了。如果要使描述符2点指向3 (/dev/null),则需要使用“. 2>&3”。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/56679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档