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