So überprüfen Sie, ob im Dateisystem eine benannte Pipe vorhanden ist

So überprüfen Sie, ob im Dateisystem eine benannte Pipe vorhanden ist

Ich habe versucht, mit dem Flag -f zu testen, ob eine benannte Pipe vorhanden ist

if [[ ! -f "$fifo" ]]; then
  echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
  return 0;
fi

diese Prüfung scheint nicht korrekt zu sein. Vielleicht ist eine benannte Pipe also keine Datei, sondern etwas anderes?

Antwort1

Sie müssen das -pKonstrukt verwenden, um zu sehen, ob die Datei vom Typ istgenanntpipe. Es funktioniert mit dem Standardtest [(POSIX-kompatibel) und den erweiterten Testoperatoren [[(bash/zsh-spezifisch).

if [[ -p "$fifo" ]]; then
    printf '%s is a named pipe' "$fifo"
fi

Aus den manSeiten von Bash

-p file

Wahr, wennfileexistiert und ist eine benannte Pipe (FIFO).

oder verwenden Sie den fileBefehl mit dem , -bum nur die Typinformationen ohne den Dateinamen auszudrucken. Das -bist möglicherweise nicht POSIX-kompatibel

if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
   printf '%s is a named pipe' "$fifo"
fi

Ohne das -bkönnte man

type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then 

verwandte Informationen