Я собирался продолжать работать над этим, но Чарльз Даффи подскочил и в значительной степени сказал то же самое в комментариях, так что я просто оставлю это здесь для потомков.Моя цель состояла в том, чтобы пройти через процесс диагностики проблемы.
Давайте пройдемся по вашему коду.Я буду использовать это изображение для своих тестов.
Вы начинаете с этого:
kpartx="$(sudo kpartx -av $IMAGE_FILE)"
В моей системе это означает:
$ IMAGE_FILE=2018-11-13-raspbian-stretch-lite.img
$ kpartx="$(sudo kpartx -av $IMAGE_FILE)"
$ echo "$kpartx"
loop3p1 : 0 89854 /dev/loop3 8192
loop3p2 : 0 3547136 /dev/loop3 98304
Ваш вывод может выглядеть иначе, но этого должно быть достаточно для наспроверить оставшуюся часть кода.
Далее вы пытаетесь извлечь имена устройств из переменной $kpartx
, используя вложенное выражение <<<
:
$ read PART_FAT32 PART_NTFS <<<$(grep -o 'loop.p.' <<<"$kpartx")
Это дает мне:
$ echo $PART_FAT32
loop3p1
$ echo $PART_NTFS
Другими словами, $PART_NTFS
пусто.Это потому, что read
работает только в одной строке, а ваша команда grep
выводит несколько строк.Результат grep -o 'loop.p.' <<<"$kpartx"
:
$ grep -o 'loop.p.' <<<"$kpartx"
loop3p1
loop3p2
Так что вам нужно реорганизовать способ извлечения этих значений.