2

if ステートメントを使用してみましたが、tee コマンドには最初と最後に 1 つずつ、2 つのブラケットがあるため、これは機能しません。

私はこのようなことを試しましたが、どちらもうまくいきませんでした

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"
4

1 に答える 1

4

一貫して引用できる場合の 1 つのオプションは、evalBash にコマンドの追加部分を強制的に評価させるために使用することです。

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

奇妙な引用の問題などについて心配する必要がないため、おそらく後者が推奨されるオプションです。

于 2011-01-11T04:03:05.377 に答える