bash 中的“&>>”有什么用?

bash 中的“&>>”有什么用?

我正在研究 bash 脚本代码,其中遇到了运算符“&>>”。我没明白它的用途。所以,我提到了http://www.gnu.org/software/bash/manual/html_node/Redirections.html

它在语义上等同于>> file 2>&1.

以下是我的 shell 的输出:-

# echo $SHELL
/bin/bash
# echo "hello" &>> file1
bash: syntax error near unexpected token `>'

# echo "hello" >> file1 2>&1

# cat file1 

hello

问题:- 为什么我会收到错误bash: syntax error near unexpected token '>'

[编辑]:- Bash 版本 3.2.25(1)-发布 (x86_64-redhat-linux-gnu)

答案1

您收到该错误是因为您使用旧版本的 bash (3.2.25)。

从 Bash4 开始,就有&>>TARGET,相当于>> TARGET 2>&1.

来源:附加重定向输出

因此,您应该考虑升级。我使用 bash 版本 4.2.45,echo "hello" &>> file1它对我来说就像一个魅力。

答案2

此功能是在 bash 4.0 alpha 中引入的,因此它应该在任何 bash >= 4.0 中可用。

http://git.savannah.gnu.org/cgit/bash.git/tree/CHANGES?id=0001803f0b9523c94fa2ede48eaecb047fef4524——第 976 行。

(原始的 4.0-alpha 变更日志将运算符错误地报告为>>&。手册页显示了正确的&>>,并且拼写错误在 4.1 中得到了纠正。)

相关内容