使用shell判斷裝置節點是否存在,例如插入4G Modem Sierra模組到Linux系統後,會產生一系列的TTY裝置,一般會有一個可以收發AT命令。例如裝置節點為 /dev/ttyUSB2 的字元裝置。
判斷指令碼如下:
wait_for_ttyUSB2() {
while true
do
echo "dev=$TTY2"
if [ -c "$TTY2" ]; then
echo "$TTY2 is exist"
break
fi
echo "wait for $TTY2 ready, and check again after 1s"
sleep 1s
done
}
下面列出了與檔案類型或者裝置類型相對應的判斷條件。
* -b file = True if the file exists and is block special file. 如果該檔案存在並且是塊特殊檔案。
* -c file = True if the file exists and is character special file.如果該檔案存在並且是字元特殊檔案
* -d file = True if the file exists and is a directory. 如果該檔案存在並且是一個目錄。
* -e file = True if the file exists. 如果該檔案存在
* -f file = True if the file exists and is a regular file 如果該檔案存在並且是一個普通檔案
* -g file = True if the file exists and the set-group-id bit is set. 如果該檔案存在並且設定了組ID位。
* -k file = True if the files’ “sticky” bit is set. 如果檔案的sticky “粘性”位被設定。
* -L file = True if the file exists and is a symbolic link. 該檔案存在並且是一個符號連結。
* -p file = True if the file exists and is a named pipe. 該檔案存在並且是一個具名管道。
* -r file = True if the file exists and is readable. 檔案存在並且是可讀的
* -s file = True if the file exists and its size is greater than zero. 檔案存在,它的大小是大於零
* -S file = True if the file exists and is a socket. 檔案存在並且是一個通訊端
* -t fd = True if the file descriptor is opened on a terminal. 檔案描述符是在一個終端上開啟的
* -u file = True if the file exists and its set-user-id bit is set. 檔案存在,它的設定使用者ID位被設定了
* -w file = True if the file exists and is writable. 檔案存在並且可寫
* -x file = True if the file exists and is executable. 檔案存在並且是可執行檔
* -O file = True if the file exists and is owned by the effective user id. 檔案存在並且是所擁有的有效使用者ID
* -G file = True if the file exists and is owned by the effective group id. 檔案存在並且擁有有效gruop id。
參照上面的說明,我們要判斷一個檔案存在而不管其類型,那麼可以使用 -e,如果要同時檢查其類型,那麼我們可以使用相對應的判斷條件。