TEE(またはその他のコマンド)を使用して、エラーまたはメッセージをファイルするためにログを記録しますが、変数x ==「はい」の場合にのみ

StackOverflow https://stackoverflow.com/questions/4653943

  •  09-10-2019
  •  | 
  •  

質問

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

後者はおそらく、奇妙な引用の問題やその他のそのようなものを心配する必要がないため、おそらく好ましいオプションです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top