linux判断设备是否存在,shell脚本判断设备节点是否存在

今天有个朋友问我如何判断一个设备节点是否存在,觉的很简单的问题,结果破费周折。

那个朋友首先发过来一个脚本说不行:

#!/bin/sh

echo "Find usb disk......."

if [ -f /dev/sda1 ]; then

echo "Runing mount > /udisk"

else

echo "Runing WLAN......"

fi

echo "Mount usb disk to /udisk Success"

执行结果就是不能执行 echo "Runing mount > /udisk"

找了半天原因,忽然发现是判断条件有问题啊。

一般的普通文件的判断条件是 -f。但对于设备节点等特殊文件那就不行了。必须使用与文件类型或者说设备类型相对应的判断条件才可以。

* -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.文件存在且设置了组标记位

* -k file = True if the files‘ "sticky" bit is set.

* -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.文件存在

参照上面的说明,我们要判断一个文件存在而不管其类型,那么可以使用 -e,如果要同时检查其类型,那么我们可以使用相对应的判断条件。就拿这个朋友的代码来说,应该使用-e或者-b才是正确的。

这段代码正确的写法应该是:

#!/bin/sh

echo "Find usb disk......."

if [ -b /dev/sda1 ]; then

echo "Runing mount > /udisk"

else

echo "Runing WLAN......"

fi

echo "Mount usb disk to /udisk Success"

原文:https://www.cnblogs.com/liushuhe1990/p/9717516.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值