Я генерировал простой сценарий удара для копирования файлов в SD-карту. Я хочу скопировать загрузочный образ в раздел начальной загрузки и двоичные файлы/библиотеки к корневому разделу. Это - мой сценарий:
#!/bin/bash
if [ -d /media/user/boot ]
then
if [ -d /media/user/root ]
then
cp -v output/boot/boot.bin /media/user/boot
sudo cp -rvp output/devroot/* /media/user/root/
echo "Sync"
sync
echo "Eject"
sudo eject /dev/sdc
echo "Ready to test"
else
echo "Mount root!"
fi
else
echo "Mounting boot!"
fi
Когда я включил снова свою SD-карту, я прочитал сообщения как они при выполнении dmesg:
Фс FAT (sdc1): Объем не был правильно размонтирован. Некоторые данные могут быть повреждены.
Выполненный fsck. Ошибка ввода-вывода, dev sdc, сектор 90514
И разделы не хорошо смонтированы.
Если я выполняю вручную команды, все идет хорошо.
Проблема не была связана со сценарием. Когда я изменил картридер, он начал работать правильно.
Я учел комментарий от Videonauth: "Другая Идея состояла бы в том, чтобы закончить синхронизирующую команду &&, который позволит сценарию только продолжиться, если команда была успешна". Следовательно это - мой заключительный сценарий, который идет, ta сохраняют несколько секунд моей жизни:
#!/bin/bash
BOOT=$1
ROOT=$2
if [ -d $BOOT ]
then
if [ -d $ROOT ]
then
cp -v output/boot/boot.bin $BOOT
sudo cp -rvp output/devroot/* $ROOT
echo "Sync"
sync &&
echo "Eject"
sudo eject /dev/sdc
echo "Ready to test"
else
echo "Mount root!"
fi
else
echo "Mount boot!"
fi