2

まず第一に、私の悪い英語で申し訳ありません。

日付でデバッグモードを有効にしたい。次のように、あるタイプのリダイレクトまたは別のタイプのリダイレクトを使用する変数を考えていました。

#!/bin/bash

DEBUG_MODE=1

if [ $CHAMAC_DEBUG = 0 ]; then
output=/dev/null
elif [ $CHAMAC_DEBUG = 1 ]; then
output=>( while read line; do echo "$(date): ${line}"; done >> ~/output.log )
fi

echo "hi, im a echo" &> $output

しかし、それは私にはうまくいきません....どうすればできますか?

4

3 に答える 3

0

これには別のファイル記述子を使用できます (他のいくつかの修正と共に)。

if [[ "${CHAMAC_DEBUG}" == "1" ]]
then
  exec 3>> ~/output.log
else
  exec 3>> /dev/null
fi

{ echo "$(date) : hi, im a echo"; } >&3

bashプロセス置換構文は、 のような内部コマンドではなく、プログラムの名前を見たいと思っていますwhile。のようなものを使用して動作させることもできます>(bash -c 'some stuff here')が、上記の方が簡単だと思います。唯一の欠点は、独自の日付スタンプを作成する必要があることです...それが問題である場合は、デバッグメッセージをsyslog(経由でlogger) に送信し、それらの特定のメッセージを独自のファイルにダンプするように構成することができます...

于 2013-09-18T19:55:55.223 に答える