TEE(またはその他のコマンド)を使用して、エラーまたはメッセージをファイルするためにログを記録しますが、変数x ==「はい」の場合にのみ
質問
IFステートメントを使用しようとしましたが、Teeコマンドには2つのブラケットがあり、1つは開始時に、もう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"
解決
一貫して物事を引用できる場合の1つのオプションは、使用することです eval
バッシュにコマンドの追加部分を評価するように強制するには:
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
後者はおそらく、奇妙な引用の問題やその他のそのようなものを心配する必要がないため、おそらく好ましいオプションです。
所属していません StackOverflow