
Tenho uma imagem do Linux que, na inicialização, precisa executar um script que ficará localizado em um pendrive conectado. Aqui está o que eu tenho.
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cd /mnt/usb/DMS
cp script.sh /
chmod +x /script.sh
/bin/sh /script.sh
Este script é adicionado posteriormente nos scripts sysvinit. Funciona com a maioria das unidades, no entanto, algumas unidades demoram um pouco para serem reconhecidas. Isso significa que meu script falhará porque /dev/sda1
ainda não está disponível.
Como modifico este script de shell para executar um tempo/espera no dispositivo, com um tempo limite se nenhum for encontrado.
Pseudo-código:
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
Como faço algo assim em um script de shell?
Responder1
Traduzindo seu pseudocódigo diretamente para o shell get
#!/bin/sh
counter=0
while [ ! -e /dev/sda1 ]; do
sleep 100
counter=$((counter + 1))
if [ $counter -ge 50 ]; then
exit
fi
done
Opcionalmente, você pode alterar -e /dev/sda1
para -b /dev/sda1
para verificar o dispositivo de bloqueio.