我试图查看/ dev / rfcomm0文件是否存在但是通过使用正常的[-f $ file]方式如下所述,我经常得到该文件不存在的消息。但是我可以用cat手动读取文件。 寻找/ etc / hosts只是为了控制我不会疯狂。
file="/dev/rfcomm0"
file2="/etc/hosts"
while :
do
[ -f $file2 ] && echo "Found host" || echo "Not found host"
[ -f $file ] && echo "Found rfcomm" || echo "not found rfcomm"
/ dev / rfcomm的手动视图
root@raspberrypi:~# cat /dev/rfcomm0
[NULL, “0,0,0”, “255255255”,5,50, “Nikske”]
可能我错过了一些非常重要的东西,但是在解决方案之后我已经找了很长时间。
答案 0 :(得分:1)
-f
标志明确指出bash
文档(我的重点):
如果文件存在 并且是常规文件,则为真
所以我保证你正在查看的文件不是一个普通文件,特别是因为它位于/dev
目录中所有排序非常规文件往往存在。
一个例子(在我的系统上有一个字符特殊文件):
pax$ ls -al /dev/rfkill
crw-rw-r--+ 1 root netdev 10, 62 Feb 13 17:49 /dev/rfkill
pax$ [[ -f /dev/rfkill ]] && echo regular || echo not regular
not regular
pax$ [[ -e /dev/rfkill ]] && echo exists || echo does not exist
exists
pax$ [[ -c /dev/rfkill ]] && echo char special || echo not char special
char special
我建议使用ls -al
检查文件的类型,并使用相应的[[
标记(例如,参见CONDITIONAL EXPRESSIONS
的输出man bash
}})。