All*_*ial 2 shell bash io-redirection fifo
我看到的大多数关于写入 FIFO 的示例都说使用echoorcat命令并将标准输出重定向到文件。例如,
echo 'a' > /tmp/my_fifo
Run Code Online (Sandbox Code Playgroud)
但是,如果 FIFO 尚不存在,这将创建一个常规文件。是否有一些类似的东西,mkfifo但是如果它不存在就会失败?也就是说,类似于:
echo 'a' | write-to-existing-file /tmp/my_fifo
Run Code Online (Sandbox Code Playgroud)
根据 BASH 手册:
-p file
True if file exists and is a named pipe (FIFO).
Run Code Online (Sandbox Code Playgroud)
所以:
if [[ -p /tmp/my_fifo ]]; then
# commands to execute
fi
Run Code Online (Sandbox Code Playgroud)
问题有标签,bash。在上下文中,使用[[与]]专用于BASH。(切圆,[[并且]]还与zsh的和Korn外壳的工作。)见BashFAQ / 031。应使用可移植脚本编写[并]在所有 POSIX shell 中工作。