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 -p
Konstrukt 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 man
Seiten von Bash
-p
file
Wahr, wenn
file
existiert und ist eine benannte Pipe (FIFO).
oder verwenden Sie den file
Befehl mit dem , -b
um nur die Typinformationen ohne den Dateinamen auszudrucken. Das -b
ist möglicherweise nicht POSIX-kompatibel
if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
printf '%s is a named pipe' "$fifo"
fi
Ohne das -b
könnte man
type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then