リダイレクトファイルをカスタム順序にする方法

リダイレクトファイルをカスタム順序にする方法

これは私のテスト.shファイルです。

エラーと出力.sh

#!/bin/bash

echo myecho
ls dflj

私が走ると、./errorandoutput.sh >file 2>&1私たちはこのようなものを得ることができますfile

STDOUTしかし、情報が裏にあることを願っていますSTDERR。だからコマンドを次に変更しました。

./errorandoutput.sh >file 1>&2

しかし、私は空のものを得ますfile。情報がリダイレクトの背後にあるようにするにはどうすればよいですかSTDOUTSTDERRfile


file私の言葉は、私が良いことを受け取ることができたらいいのです。

ls: cannot access 'dflj': No such file or directory
myecho

ベストアンサー1

これは、リダイレクト順序が機能する方法ではありません。

リダイレクト順序は、シェルがファイルの内容ではなくファイル記述に対して操作を実行する順序のみを決定します。

存在する:

./errorandoutput.sh >file 2>&1

まず、シェルは標準出力にリダイレクトfileし、次に標準エラーをリダイレクトします。これは標準出力を指すfileので、標準出力と標準エラーの両方に移動しますfile

この段階で、シェルはリダイレクトを完了しました。ファイルの内容とは何の関係もありませんfile

コンテンツの順序は、fileスクリプト内で実行されるコマンドの順序によって決定されます。スクリプトを次のように変更します。

#!/bin/bash

ls dflj
echo myecho

あなたはあなたが望むものを得るでしょう。

おすすめ記事