Ответ 1
Вы можете использовать -p
test
if [[ -p $pipe ]]
или
if [ -p "$pipe" ]
Чтобы проверить, существует ли файл, выполните следующие действия:
if [ -f $FILE ];
но он не работает, если $FILE является именованным каналом,
например ls -l pipename
показывает канал с атрибутом p:
prw-r--r-- 1 usr grp 0 Nov 26 02:22 pipename
Как проверить, существует ли именованный канал?
Вы можете использовать -p
test
if [[ -p $pipe ]]
или
if [ -p "$pipe" ]
На дружественной странице man перечислены несколько операторов проверки файлов, в том числе:
-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
все время; используйте тот, который делает то, что вы имеете в виду.
Вы можете попробовать следующее:
if [[ -p $pipe ]]
или просто попробуйте удалить []
следующим образом:
if [ -p "$pipe" ]
Также проверьте Bash условные выражения и Bash Shell: Проверить наличие файлов или нет