Я запустил сценарий для форматирования диска с помощью fdisk следующим образом:
(echo n; echo p; echo $number_part; echo $firs_sector; echo $second_sector; echo t; echo $format; echo p; echo w) | fdisk /dev/$disk
когда я выполняю первый раз, формат выглядит так:
Device Boot Start End Blocks Id System /dev/sdb1
2048 2099199 1048576 83 Linux
но при следующем выполнении скрипт не работает:
command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4, default 2): Using default value 2
First sector (2099200-20971519, default 2099200): Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-20971519, default 20971519):
Command (m for help): Partition number (1-4): Value out of range.
Partition number (1-4): Partition number (1-4): Partition number (1-4):
Я написал эхо, чтобы увидеть, содержит ли переменная number_part правильное значение и есть ли изменения, но это не меняется.
Я отлаживал разные формы и видел, что если я удалю часть команды: «echo t», она сработает.
Я не знаю, почему в первый раз это работает, но во второй появляется ошибка.
После создания раздела вы переходите к настройке типа раздела: echo t;
. Затем в следующем приглашении вы выводите номер желаемого типа раздела ... но это не то fdisk
спрашивает. Он хочет знать номер раздела, тип которого вы хотите установить первый.
Итак, последовательность должна быть такой:
... echo t; echo $number_part; echo $format; ...
Обратите внимание, что при наличии только одного раздела вопрос о номере раздела будет опущен, поскольку существует только один возможный раздел, тип которого можно задать.
Если вы хотите создать разделы в скрипте, вы можете рассмотреть возможность использования sfdisk
вместо. Его интерфейс гораздо больше подходит для написания сценариев.