Скрипт Bash -переменные в фигурных скобках

Я нашел эту строку в выводе bootinfoscript:

/dev/sdb7    *    308,977,664   310,026,239     1,048,576  ef EFI (FAT-12/16/32)

Это тип системы EFI. Но. Он находится на диске с маркировкой MBR/dos.

Bootinfoscript очень информативен. У вас действительно есть несколько загрузчиков везде. Это должно быть поправимо.

Как именно ты загружаешься сейчас и что ты хочешь на будущее?

Потому что с тремя отдельными дисками и двумя ОС, устаревшей и UEFI-биой и существующей двойной загрузкой :много возможностей. Даже для простого решения 1=win, 2=linux 3=data.

Вы должны иметь возможность запускать Linux из любой командной строки grub с правильными образами и корнем. Как из оболочки uefi.

Если вы загружаете UEFI в оболочку grub или uefi, а затем запускаете ядро ​​​​с initrd из того же EFI -sp, вы можете получить систему busybox root=/dev/ram0без каких-либо реальных разделов, только систему EFI объемом 1 ГБ. раздел. Что еще вы поместите на свои три диска... дополнительно.

Иерархия:

BIOS legacy or uefi
   BOOTORDER (internal ones, external ones, uefi shell...)
      MENU bootloader  (or COMMAND uefi shell)

Оболочка uefi со скриптами,и загрузчик с ручной командной строкой очень похожи.


Если все работает (т.е. правильный биос uefi, без неприятных сюрпризов ), лично мне бы хотелось, чтобы было так:

BIOS legacy (не используется ):загрузка Windows с disk1, как и прежде, через MBR

BIOS UEFI :три (или более )загрузочных записей :для grub на disk2, одна future на disk3, возможно, плюс загрузка systemd -; и вариант загрузки «Uefi Shell».

МЕНЮ загрузчика на диске 2 (Диск Linux ):с одной или несколькими записями для Linux на том же диске. Этот grub также должен иметь возможность загружать окна с dos-диска1 и, возможно, по цепочке -загружать диск3.

Из всего этого можно построить полный контур. Я надеюсь, вы видите схему того, что я имею в виду. Если нет, то попробуйте ручку и бумагу. Для меня это слишком "далеко".

4
15.11.2020, 16:04
2 ответа

Переменные не раскрываются внутри раскрытия скобок . Вы могли бы сделать:

for ((number=startNumber; number<=endNumber; number++)); do
    echo "$number"
done

Кроме того, нет причин использовать арифметическое расширение для startNumber, вы должны просто сделать:
startNumber=1.

Кроме того, вам не нужно использовать $для расширения переменных внутри арифметического расширения, поэтому endNumberможет быть:
endNumber=$((startNumber+3))

8
18.03.2021, 22:49

Как объяснялось в другом месте, расширение не будет работать. Альтернативный способ получить вашу последовательность чисел:

for number in $(seq $startNumber $endNumber)
do
  echo $number
done
8
18.03.2021, 22:49

Теги

Похожие вопросы