如何测试命名管道是否存在?

时间:2013-11-27 14:54:42

标签: bash

为了测试文件是否存在我做:

if [ -f $FILE ];

但如果$ FILE是命名管道,它就不起作用, 例如ls -l pipename显示了一个 p 属性的管道:

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

如何测试命名管道是否存在?

3 个答案:

答案 0 :(得分:15)

您可以使用-p测试

if [[ -p $pipe ]]

if [ -p "$pipe" ]

答案 1 :(得分:6)

友好手册页列出了几个文件测试操作符,包括:

-e file
       True if file exists.

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

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

不要只是一直使用-f;使用你所说的那个。

答案 2 :(得分:2)

您可以尝试这样:

if [[  -p $pipe ]]

或者您可以尝试删除[]这样的内容:

if [ -p "$pipe" ]

同时检查Bash Conditional ExpressionsBash Shell: Check File Exists or Not