为了测试文件是否存在我做:
if [ -f $FILE ];
但如果$ FILE是命名管道,它就不起作用,
例如ls -l pipename
显示了一个 p 属性的管道:
prw-r--r-- 1 usr grp 0 Nov 26 02:22 pipename
如何测试命名管道是否存在?
答案 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 Expressions和Bash Shell: Check File Exists or Not