쉘 스크립트에서 시간 초과와 함께 /dev/sda1을 사용할 수 있을 때까지 기다리는 중

쉘 스크립트에서 시간 초과와 함께 /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아직 사용할 수 없기 때문에 내 스크립트가 실패한다는 의미입니다 .

장치에서 잠시/대기를 수행하고 아무것도 발견되지 않는 경우 시간 초과가 발생하도록 이 셸 스크립트를 수정하려면 어떻게 해야 합니까?

의사 코드:

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

쉘 스크립트에서 이와 같은 작업을 어떻게 수행합니까?

답변1

의사 코드를 쉘 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

관련 정보