这是我正在尝试做的事情:
[[ "${1}" == "debug" ]] && DEBUG='2>/dev/null' || DEBUG=''
{
echo "a b c"
echo "d e f" >&2
} ${DEBUG}
这不起作用,因为“sh:意外标记 `${BLAH}' 附近的语法错误”。我可以做类似的事情,像这样:
eval echo "def" ${DEBUG}
但我不能用一大块代码来做到这一点。另一种方法可能是使用“exec”在我的其余代码中进行重定向,例如:
[[ "${1}" == "debug" ]] && exec 2>/dev/null
但是如果我尝试以特定方式使用 exec,我的外壳就会挂起。有什么想法吗,刀友们?