Bash
僅當 FIFO 存在時才寫入
我看到的大多數關於寫入 FIFO 的範例都說使用
echo
orcat
命令並將標準輸出重定向到文件。例如,echo 'a' > /tmp/my_fifo
但是,如果 FIFO 尚不存在,這將創建一個正常文件。是否有一些類似的東西,
mkfifo
但如果它不存在,寫作會失敗?也就是說,類似於:echo 'a' | write-to-existing-file /tmp/my_fifo
根據 BASH 手冊:
-p file True if file exists and is a named pipe (FIFO).
所以:
if [[ -p /tmp/my_fifo ]]; then # commands to execute fi
問題有標籤bash。在上下文中,
[[
and的使用]]
特定於 BASH。(切線,[[
也]]
可以使用 zsh 和 Korn shell。)請參閱BashFAQ/031。應使用可移植腳本編寫[
並]
在所有 POSIX shell 中工作。