Bash

僅當 FIFO 存在時才寫入

  • September 8, 2017

我看到的大多數關於寫入 FIFO 的範例都說使用echoorcat命令並將標準輸出重定向到文件。例如,

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 中工作。

引用自:https://unix.stackexchange.com/questions/391023