0
我正在寫一個bash樣板文件以在我們的內部項目中重用。其中一項功能是支持noop,調試和記錄到文件的輸出功能。這工作正常,直到我嘗試重定向輸出時使用它。這是我的代碼的當前版本以及一個失敗的示例:如何在bash中使用FD重定向來評估表達式
function output() {
if [ "$NOOP" == 'true' ]; then
if [ "$DEBUG" == 'true' ]; then
echo "$1" |& tee -a $LOGFILE
else
echo "$1"
fi
else
if [ "$DEBUG" == 'true' ]; then
echo "Command: $1" |& tee -a $LOGFILE
($1) |& tee -a $LOGFILE
else
($1) 2>&1 >> $LOGFILE
fi
fi
}
output "echo test > test.log"
任何輸入將不勝感激。
答案在你的標題中:use'eval'。 – Barmar
確實,(eval $ 1)2>&1 >> $ LOGFILE按預期工作。 – m4mush
引用變量,並且不需要將其放在括號中。 – Barmar