user282164 Asked: 2019-06-05 10:38:58 +0800 CST2019-06-05 10:38:58 +0800 CST 2019-06-05 10:38:58 +0800 CST 如何检查文件系统上是否存在命名管道[重复] 772 我尝试使用 -f 标志来测试是否存在命名管道 if [[ ! -f "$fifo" ]]; then echo 'There should be a fifo.lock file in the dir.' > /dev/stderr return 0; fi 这个检查似乎不正确。所以也许命名管道不是文件,而是别的东西? bash test 1 个回答 Voted Best Answer Inian 2019-06-05T10:42:17+08:002019-06-05T10:42:17+08:00 您需要使用该-p构造来查看文件是否属于命名管道类型。它适用于标准测试[(符合 POSIX)和扩展测试运算符[[(特定于 bash/zsh) if [[ -p "$fifo" ]]; then printf '%s is a named pipe' "$fifo" fi 来自manbash 的页面 -p file 如果file存在并且是命名管道 (FIFO),则为真。 或使用file带有 的命令-b仅打印不带文件名的类型信息。-b可能不符合POSIX if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then printf '%s is a named pipe' "$fifo" fi 没有-b, 可以做 type=$(file "$fifo") if [ "${type##*: }" = "fifo (named pipe)" ]; then
您需要使用该
-p
构造来查看文件是否属于命名管道类型。它适用于标准测试[
(符合 POSIX)和扩展测试运算符[[
(特定于 bash/zsh)来自
man
bash 的页面或使用
file
带有 的命令-b
仅打印不带文件名的类型信息。-b
可能不符合POSIX没有
-b
, 可以做