2011-01-11 6 views
2

if文を使ってみましたが、teeコマンドは2つの括弧開始点と終了点の1つ。 、tee(または他のコマンド)を使ってエラーやメッセージをファイルに記録するのは、変数x == "yes"のときだけです

./ftp.sh: line 149: syntax error near unexpected token `"$ftpt"' 
./ftp.sh: line 149: `} "$ftpt"' 

私は、現時点ではこれを使用しますが、私はそれをオン/オフするのnoオプションを持っていない:

は、私はどちらか

if [[ "$logging" == "yes" ]]; then 
    ftpt="2>&1 | tee $ftpLF" 
else 
    ftpt="" 
fi 
} "$ftpt" 

エラーが動作しませんでした。このような何かを、試してみましたそれはちょうどオンである

{ 
....commands.... 
} 2>&1 | tee "$ftpLF" 
+0

「tee」のようなコマンドの残りの部分についてもう少し詳しく説明できますか? – Amber

+0

"....コマンド...." if文とFTPコマンド(ftpアップロードスクリプト)がたくさんあるだけです...} 2>&1 | tee /home/user/ftplog.txt本当に何かを与えることはありません。 – Mint

答えて

4

一貫して物事を引用できる場合は、「あなたはドンので、後者は、おそらく好ましい選択肢である

ftpcommands() { 
    command1 "foo bar" baz 
    command2 
} 

if [[ "$logging" == "yes" ]]; then 
    ftpcommands 2>&1 | tee "$ftpLF" 
else 
    ftpcommands 
fi 

eval '{ 
    command1 "foo bar" baz 
    command2 
} "$ftpt"' 

別のオプションは、実際の名前の関数を使用することです:コマンドの追加部分を評価するためのバッシュを強制する10奇妙な引用問題やその他のことについて心配する必要はありません。

+0

このように関数を使用することについては決して考えませんでした。 – Mint

関連する問題