BASH stderr 重定向时出现 tput 错误

BASH tput error on stderr redirection

编写应在终端上显示错误并将其保存到 stderr 的函数

die () {
echo "$(tput setaf 1) ERROR: $*. Aborting...  $(tput sgr 0)" > &2 
exit 1 
}

不幸的是,这将生成

syntax error near unexpected token `&'
`    echo "$(tput setaf 1) ERROR: $*. Aborting...  $(tput sgr 0)" > &2 '

我知道这是因为 tput 但我不明白为什么。

我真的不在乎我的标准错误中有颜色,但我想将它们保留在显示器上。

重定向到 stderr>&2 完成 - 没有空格。