You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用if分支检测USB stick是否连接并执行备份及提示操作

检测USB存储设备连接的shell脚本实现

完全可以通过if分支实现U盘连接检测和对应业务逻辑,你提供的原始脚本思路是正确的,只需要修正语法细节、补充鲁棒性处理即可正常运行。

原始脚本存在的问题

  • 语法错误:shell 中[是内置测试命令,和后续参数之间必须保留空格,原写法[-e /sdb1]会触发命令不存在报错,需修正为[ -e /sdb1 ]
  • 逻辑风险:/sdb1是U盘的块设备路径,直接往设备路径写入文件会破坏分区表,正常需要先将U盘挂载到指定目录,再往挂载目录写入数据,避免数据损坏。

修正后的可运行脚本

#!/bin/bash
# 定义U盘挂载目录
USB_MOUNT_PATH="/mnt/usb"
# 自动创建挂载目录(不存在时生效)
mkdir -p ${USB_MOUNT_PATH}

# 检测sdb1块设备是否存在(即U盘是否连接)
if [ -e /dev/sdb1 ]
then
    # 挂载U盘到指定目录
    mount /dev/sdb1 ${USB_MOUNT_PATH}
    # 校验挂载结果
    if [ $? -eq 0 ]
    then
        cp /home/backup/* ${USB_MOUNT_PATH}/
        rm -r /home/backup/*
        echo "文件已成功传输至U盘"
        # 可选操作:文件传输完成后自动卸载U盘
        # umount ${USB_MOUNT_PATH}
    else
        echo "U盘挂载失败,请检查设备分区是否正常"
    fi
else
    echo "请确认您的U盘已正确连接到设备"
fi

注意事项

  • 如果你的系统中U盘的设备名不是sdb1,可以插入U盘后执行lsblk命令查看对应设备名,替换脚本中的/dev/sdb1即可正常使用
  • 该脚本涉及设备挂载、卸载操作,需要使用root权限运行
  • 如果你的系统开启了U盘自动挂载,也可以直接检测挂载目录是否存在,比如写if [ -d /media/当前用户名/U盘盘符 ]来判断是否连接,不需要额外手动挂载

内容的提问来源于stack exchange,提问作者Bm_bm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:27:02