我尝试使用if语句,但这不起作用,因为tee命令有两个括号,一个在开始,一个在结束。
我试过这样的东西,也没用
if [[ "$logging" == "yes" ]]; then
ftpt="2>&1 | tee $ftpLF"
else
ftpt=""
fi
} "$ftpt"
错误:
./ftp.sh: line 149: syntax error near unexpected token `"$ftpt"'
./ftp.sh: line 149: `} "$ftpt"'
我现在用这个,但我没办法开/关,它总是开着的
{
....commands....
} 2>&1 | tee "$ftpLF"
最佳答案
如果您可以一致地引用内容,一个选项是使用eval
强制Bash计算命令的添加部分:
eval '{
command1 "foo bar" baz
command2
} "$ftpt"'
另一种选择是使用实际命名的函数:
ftpcommands() {
command1 "foo bar" baz
command2
}
if [[ "$logging" == "yes" ]]; then
ftpcommands 2>&1 | tee "$ftpLF"
else
ftpcommands
fi
后者可能是首选,因为您不必担心奇怪的引用问题或其他类似问题。