代码之家  ›  专栏  ›  技术社区  ›  Roel

正在读取/dev/rfcomm0,bash未注意到文件存在

  •  0
  • Roel  · 技术社区  · 6 年前

    我试图查看/dev/rfcomm0文件是否存在,但通过使用正常的[-f$文件]方式,我不断得到该文件不存在的消息,如下所述。但我可以用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
    

    [空,“0,0,0”,“255255255”,5,50,“Nikske”]

    也许我遗漏了一些非常重要的东西,但我一直在寻找解决方案。

    1 回复  |  直到 6 年前
        1
  •  1
  •   paxdiablo    6 年前

    这个 -f 国旗明确表示 bash 文档(我的重点):

    如果文件存在,则为True 并且是常规文件

    所以我保证你看到的文件是 常规文件,尤其是在 /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 ).