-fフラグを使用して、名前付きパイプが存在するかどうかをテストしてみました
if [[ ! -f "$fifo" ]]; then
echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
return 0;
fi
このチェックは正しくないようです。それで、おそらく名前付きパイプはファイルではなく、何か他のものですか?
-p
構文を使用して、ファイルのタイプがnamedパイプであるかどうかを確認する必要があります。標準テスト[
(POSIX準拠)および拡張テスト演算子[[
(bash/zsh固有)で動作します
if [[ -p "$fifo" ]]; then
printf '%s is a named pipe' "$fifo"
fi
Bashのman
ページから
-p
file
file
が存在し、名前付きパイプ(FIFO)である場合はTrue。
または、file
コマンドと-b
を使用して、ファイル名なしでタイプ情報を出力します。 -b
はPOSIXに準拠していない可能性があります
if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
printf '%s is a named pipe' "$fifo"
fi
-b
がなければ、
type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then