我有一个 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
检查块设备。