gpt4 book ai didi

linux - 拔下 USB 内存棒后重启的 bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:27 25 4
gpt4 key购买 nike

我在 bash 中有这个脚本 tahat 应该检查机器中是否存在 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 pendrive 时它会检测到 USB :( - 我在哪里弄错了?

最佳答案

我会用不同的方式写:

#! /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更有效,所以你不需要使用readlink也不是 grep
  2. 使用 awk 更有效,因此您不需要使用 grep剪切

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

关于linux - 拔下 USB 内存棒后重启的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com