在 shell 脚本中等待 /dev/sda1 变为可用(超时)

在 shell 脚本中等待 /dev/sda1 变为可用(超时)

我有一个 Linux 映像,在启动时需要执行一个位于插入的拇指驱动器上的脚本。这是我所拥有的。

mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cd /mnt/usb/DMS
cp script.sh /
chmod +x /script.sh
/bin/sh /script.sh

该脚本添加到 sysvinit 脚本的后期。它适用于大多数驱动器,但是,某些驱动器需要一段时间才能被识别。这意味着我的脚本将失败,因为/dev/sda1尚不可用。

如何修改此 shell 脚本以在设备上执行一段时间/等待,如果没有找到则超时。

伪代码:

counter = 1
while /dev/sda1 not present
   sleep 100
   counter++
   if counter is 50
      exit # no drive ever found
   endif
endwhile

# do stuff with plugged in drive, mount it, whatever

如何在 shell 脚本中执行类似的操作?

答案1

将伪代码直接翻译成 shell get

#!/bin/sh
counter=0

while [ ! -e /dev/sda1 ]; do
    sleep 100
    counter=$((counter + 1))
    if [ $counter -ge 50 ]; then
        exit
    fi
done

您可以选择更改-e /dev/sda1-b /dev/sda1检查块设备。

相关内容