Bashスクリプトでは、ファイル名引数でプロセスstdoutを複数回開くと失敗します。

Bashスクリプトでは、ファイル名引数でプロセスstdoutを複数回開くと失敗します。

次のbashスクリプトコードを考えてみましょう。

#!/bin/bash

function bug_part() {
    cat $1 > sample.first
    cat $1 > sample.second #second time you open file $1, it contains no data
}

bug_part <(echo "TEST")
[ "$(cat sample.first)" != "$(cat sample.second)" ] && echo "THIS IS A BUG" 1>&2 && exit 1
rm sample.first sample.second

この問題がbashバグであることに同意しますか?それともLinuxのバグですか?

後ろから何が起こっているのか知っている人はいますか?

ベストアンサー1

私はこれが間違いだとは思わない。次のコマンドで接続された名前付きパイプを読み書きできます。プロセスの交換一度だけ。

おすすめ記事