名前付きパイプが存在するかどうかをテストするために-fフラグを使用しようとしました
if [[ ! -f "$fifo" ]]; then
echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
return 0;
fi
このチェックは正しくないようです。名前付きパイプはファイルではなく、何か他のものでしょうか?
答え1
-p
ファイルの型を確認するには、構文を使用する必要があります。名前パイプ。標準テスト[
(POSIX準拠)と拡張テスト演算子[[
(bash/zsh固有)で動作します。
if [[ -p "$fifo" ]]; then
printf '%s is a named pipe' "$fifo"
fi
man
bashのページから
-p
file
真の場合
file
存在し、名前付きパイプ (FIFO) です。
または、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