
我有一個 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
檢查區塊設備。