這裏就是我想要做的事:嘗試使用的變量在bash重定向標準錯誤到/ dev/null的
[[ "${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。任何想法,切肉刀的朋友?
它甚至發生在不同的_fd_而不是'2>'和不同的shell如_Bourne Shel_l('sh') 如果您選擇任何其他數字,結果是同樣的:「失去外殼互動」。 – xsubira