我尝试使用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

后者可能是首选,因为您不必担心奇怪的引用问题或其他类似问题。

09-19 02:37