我正在研究 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 中得到了纠正。)