Intenté usar el indicador -f para probar si hay una canalización con nombre presente
if [[ ! -f "$fifo" ]]; then
echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
return 0;
fi
Esta comprobación no parece correcta. Entonces, ¿quizás una canalización con nombre no sea un archivo, sino algo más?
Respuesta1
Necesita usar la -p
construcción para ver si el archivo es del tipollamadotubo. Funciona con la prueba estándar [
(compatible con POSIX) y los operadores de prueba extendidos [[
(específicos de bash/zsh)
if [[ -p "$fifo" ]]; then
printf '%s is a named pipe' "$fifo"
fi
De las man
páginas de bash
-p
file
cierto si
file
existe y es una canalización con nombre (FIFO).
o use el file
comando con -b
para simplemente imprimir la información del tipo sin el nombre del archivo. Es -b
posible que no sea compatible con POSIX
if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
printf '%s is a named pipe' "$fifo"
fi
Sin el -b
, uno podría hacer
type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then