bash:サフィックスなしのIOリダイレクト

bash:サフィックスなしのIOリダイレクト

通常はを使用しますXX 2>error.logが、デバッグ目的で次の構文を好みます。

function XX()
{
    redirect_io_to "error.log"
}

そのような構文を使用できますか?

一部のショートカットを使用して、行にコメントを付けたりコメントを解除したりするようにVIMを設定し、コメントを付けたりコメントを解除したりするのが便利です。

答え1

うん、でもあまりきれいじゃない。

ファイルにexec 2> error.log送信できますstderr

問題は、整理して復元する必要がstderrあるため、関数の一番下で行う必要があるため、端末に戻りますexec 2>&1stderr

function XX()
{
    exec 2> error.log
    foo bar
    exec 2>&1
}

exec 2>&1引き続き使用しても問題にならないので、最初の項目にコメントを付けてコメントを削除するだけですexec


または、リダイレクトが自動的にクリアされるように、関数全体をサブシェルで実行させることもできます(以下の例の角括弧はサブシェルを起動します)。

function XX()
{ (
    exec 2> error.log
    foo bar
) }

最後に、簡単にコメントを付けたり、コメントを削除したりできるエイリアス定義を作成して、関数宣言の前に配置することができます。

alias XX='XX 2> error.log'
function XX()
{
    foo bar
}

答え2

いいえ、でもいつでも好きなものをブロックに積み重ねることができます。

function XX() {
 (
  some
  commands
  here
 ) 2>error.log
}

関連情報