Tentei usar o sinalizador -f para testar se um pipe nomeado está presente
if [[ ! -f "$fifo" ]]; then
echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
return 0;
fi
esta verificação não parece correta. Então, talvez um pipe nomeado não seja um arquivo, mas algo mais?
Responder1
Você precisa usar a -p
construção para ver se o arquivo é do tiponomeadocano. Ele funciona com o teste padrão [
(compatível com POSIX) e os operadores de teste estendido [[
(específico do bash/zsh)
if [[ -p "$fifo" ]]; then
printf '%s is a named pipe' "$fifo"
fi
Das man
páginas do bash
-p
file
Verdadeiro se
file
existe e é um pipe nomeado (FIFO).
ou use o file
comando com para -b
apenas imprimir as informações do tipo sem o nome do arquivo. Pode -b
não ser compatível com POSIX
if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
printf '%s is a named pipe' "$fifo"
fi
Sem o -b
, alguém poderia fazer
type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then