Проблема не в $ i
, проблема в синтаксисе конструкции for
. Вам нужна новая строка или ;
перед do
(если используется сразу после для объявления
):
for i in {0..9}; do
T=$(bc <<<"8+$i*0.5")
echo "$T"
done
Или
for i in {0..9}
do
T=$(bc <<<"8+$i*0.5")
echo "$T"
done
Для ясности лучше использовать пробел перед строкой здесь ( <<<
) (и аналогичные).
Хотя это и не обязательно в данном случае, вам следует указать расширения переменных.
sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } \
/partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp
То, что делает приведенная выше команда, на самом деле просто:
Она находит начальный сектор раздела 2 изображения vexpress.img
, умножьте его на 512 и возьмите результат как смещение, чтобы смонтировать как устройство петли.
Команда mount
принимает значение смещения в байте . Каждый сектор имеет 512 байтов, поэтому умножение смещения начального сектора на 512 даст начальное смещение в байтах.
Вот альтернативный способ сделать это: (в качестве примера я беру необработанный образ raspbian)
Найдите смещение:
$ fdisk -lu 2016-09-23-raspbian-jessie-lite.img {{ 1}} Диск 2016-09-23-raspbian-jessie-lite.img: 1.3 ГиБ, 1389363200 байт, 2713600 секторов
Единицы: секторы размером 1 * 512 = 512 байт
Размер сектора (логический / физический): 512 байт / 512 байт
Размер ввода-вывода (минимум / оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x5a7089a1
Начальный размер конечных секторов загрузки устройства Тип идентификатора {{1} }} 2016-09-23-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
2016-09-23-raspbian-jessie-lite.img2 137216 2713599 2576384 1.2G 83 Linux
Начальное смещение второго раздела - 137216
. Как и ваш vexpress.img
, раздел 2 - это корневой раздел, который нас интересует.
Простая математика:
$ perl -e "print 137216 * 512"
70254592 { {1}}
Установите его:
sudo mount -o loop, offset = 70254592 vexpress.img / mnt / tmp