부팅 시 삽입된 썸 드라이브에 있는 스크립트를 실행해야 하는 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