首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拔出usb卡后重新启动的bash脚本

拔出usb卡后重新启动的bash脚本
EN

Stack Overflow用户
提问于 2014-07-03 13:37:32
回答 1查看 270关注 0票数 1

我在bash中有这个脚本,它应该检查usb设备是否存在于机器中,如果没有,则重新启动它:

代码语言:javascript
复制
#!/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 :( -我哪里出错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 14:24:51

我会用不同的方式来写:

代码语言:javascript
复制
#! /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!" 
fi
  1. 使用find更有效,所以您不需要使用readlinkgrep
  2. 使用awk更有效,所以您不需要使用grepcut

我在发布之前测试了这个脚本,我希望它能有所帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24555216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档