我在bash中有这个脚本,它应该检查usb设备是否存在于机器中,如果没有,则重新启动它:
#!/bin/bash
UNPLUG_MESSAGE="PLEASE UNPLUG THE USB STICK NOW"
export REMOVABLE_DRIVE=""
function dev_detect {
for _device in /sys/block/*/device; do
if echo $(readlink -f $_device)|egrep -q "usb"; then
_disk=`echo $_device | cut -f4 -d/`
REMOVABLE_DRIVE="$_disk"
echo "dev_detect_function"
fi
done
}
dev_detect
clear
echo $UNPLUG_MESSAGE
sleep 5
function check_usb {
if [[ $REMOVABLE_DRIVE == *sdb* ]] || [[ $REMOVABLE_DRIVE == *sdc* ]]
then
dev_detect
echo $REMOVABLE_DRIVE
echo "PLEASE UNPLUG THE USB STICK";
sleep 2
check_usb
else
echo "else reboot block"
sudo reboot
fi
}
check_usb但当我拔掉usb吊坠时,它会检测到usb :( -我哪里出错了?
发布于 2014-07-03 14:24:51
我会用不同的方式来写:
#! /bin/bash
REMOVABLE_DEVICE=$(find /sys/block/ -type l -printf "%f %l\n" | awk '/usb/{print $1}')
if grep -Eq "(sdb|sdc)" <<< "$REMOVABLE_DEVICE" ;then
echo "DEVICE IS PRESENT!"
else
echo "DEVICE NOT PRESENT!"
fifind更有效,所以您不需要使用readlink或grepawk更有效,所以您不需要使用grep或cut我在发布之前测试了这个脚本,我希望它能有所帮助:)
https://stackoverflow.com/questions/24555216
复制相似问题