FIFOが存在する場合のみ書き込み

FIFOが存在する場合のみ書き込み

FIFOに書き込むほとんどの例は、echoコマンドcatを使用してstdoutをファイルにリダイレクトすることです。例えば、

echo 'a' > /tmp/my_fifo

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

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

ベストアンサー1

BASHマニュアルによると:

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

だから:

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

質問にはラベルがあります。強く打つ。コンテキストでは[[、使用法は]]BASHにのみ適用されます。 (接線的にzshおよびKornシェル[[]]使用できます。)バッシュFAQ/031。すべてのPOSIXシェルで実行される[移植可能なスクリプトを使用して作成する必要があります。]

おすすめ記事