デバイスファイルが存在するかどうかを判断する方法

1458 ワード

問:どのようにshellの中で実現して、設備ファイルが存在するかどうかを判断して、存在しないならば再び判断して、それが存在するまで、存在したら下へ走りますか?
判断するデバイスファイルが文字デバイスであると仮定します.たとえば、/dev/input/event 4
while true; do
	if [ ! -c /dev/input/event4 ]; then
		echo "Can not find /dev/input/event4"
		sleep 1
		continue
	else 
		echo "Found /dev/input/event$event_num"
		do something
		break
	fi
done 

またshell if言語でよく使われるパラメータの説明を添付します
-a file exists. 
-b file exists and is a block special file. 
-c file exists and is a character special file. 
-d file exists and is a directory. 
-e file exists (just the same as -a). 
-f file exists and is a regular file. 
-g file exists and has its setgid(2) bit set. 
-G file exists and has the same group ID as this process. 
-k file exists and has its sticky bit set. 
-L file exists and is a symbolic link. 
-n string length is not zero. 
-o Named option is set on. 
-O file exists and is owned by the user ID of this process. 
-p file exists and is a first in, first out (FIFO) special file or 
named pipe. 
-r file exists and is readable by the current process. 
-s file exists and has a size greater than zero. 
-S file exists and is a socket. 
-t file descriptor number fildes is open and associated with a 
terminal device. 
-u file exists and has its setuid(2) bit set. 
-w file exists and is writable by the current process. 
-x file exists and is executable by the current process. 
-z string length is zero.