web-dev-qa-db-ja.com

FIFO存在する場合のみ)に書き込む

FIFOへの書き込みについて私が目にする例のほとんどは、echoまたはcatコマンドを使用して、stdoutをファイルにリダイレクトすることを示しています。

echo 'a' > /tmp/my_fifo

ただし、FIFOがまだ存在しない場合は通常のファイルが作成されます。mkfifoに類似したものはありますが、存在しない場合は書き込みに失敗しますか?は、次のようなものです。

echo 'a' | write-to-existing-file /tmp/my_fifo
2
user369450

BASHマニュアルによると:

-p file
   True if file exists and is a named pipe (FIFO).

そう:

if [[ -p /tmp/my_fifo ]]; then
    # commands to execute
fi

質問にはタグbashがあります。コンテキストでは、[[および]]の使用法はBASHに固有です。 (正直なところ、[[]]はzshとKornシェルでも機能します。) BashFAQ/031 を参照してください。ポータブルスクリプトは、すべてのPOSIXシェルで機能する[および]を使用して作成する必要があります。

8
Christopher