在 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檢查區塊設備。

相關內容