スクリプトで次の行を見ました。
DEVICE=`dialog --inputbox "Festplatten-Laufzeit auslesen. Gebe Sie das
gewünschte Device an: " 0 70 "" 3>&1 1>&2 2>&3`
何ですか
3>&1 1>&2 2>&3
行為? 1 = stdoutと2 = stderrを知っていますが、3
and&
の用途は何ですか?
ベストアンサー1
この数字はファイル記述子で、最初の3つ(0から始まる)のみが標準化された意味を持ちます。
0 - stdin
1 - stdout
2 - stderr
したがって、コマンドの各数字はファイル記述子を表します。ファイル記述子をファイルにリダイレクトする>
か、別のファイル記述子にリダイレクトできます。>&
3>&1
コマンドラインは新しいファイル記述子を作成し、それに1
リダイレクトしますSTDOUT
。次に、1>&2
ファイルディスクリプタ1をリダイレクトSTDERR
し、2>&3
ファイルディスクリプタ2を3にリダイレクトしますSTDOUT
。
STDOUT
したがって、デフォルトでおよびを切り替えると、STDERR
次の手順が実行されます。
- 新しいfd 3を作成し、fd 1を指します。
- ファイル記述子1をファイル記述子2にリダイレクトします。 3でファイル記述子を保存しないと、ターゲットが失われます。
- ファイル記述子2をファイル記述子3にリダイレクトします。これで、ファイル記述子1とファイル記述子2が置き換えられました。
プログラムがファイルディスクリプタ1に何かを印刷すると、ファイルディスクリプタ2にも印刷され、その逆も同様です。