psihodelia
psihodelia

Reputation: 30502

How to test if a named pipe exists?

In order to test if a file exists I do:

if [ -f $FILE ];

but it doesn't work if $FILE is a named pipe, e.g. ls -l pipename shows a pipe with p attribute:

prw-r--r-- 1 usr grp 0 Nov 26 02:22 pipename

How to test if a named pipe exists?

Upvotes: 24

Views: 24845

Answers (3)

Rahul Tripathi
Rahul Tripathi

Reputation: 172518

You can try like this:

if [[  -p $pipe ]]

or you can simply try by removing the [] like this:

if [ -p "$pipe" ]

Also check Bash Conditional Expressions and Bash Shell: Check File Exists or Not

Upvotes: 4

user2404501
user2404501

Reputation:

The friendly man page lists several file test operators, including:

-e file
       True if file exists.

and

-f file
       True if file exists and is a regular file.

and

-p file
       True if file exists and is a named pipe (FIFO).

Don't just use -f all the time; use the one that does the thing you mean.

Upvotes: 7

iruvar
iruvar

Reputation: 23374

You could use the -p test

if [[ -p $pipe ]]

or

if [ -p "$pipe" ]

Upvotes: 27

Related Questions