fdisk с одной командой сбой при втором выполнении
Я запустил скрипт для форматирования диска с помощью 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" команды, она работает.
Я не знаю, почему в первый раз это работает, но во втором он видит ошибку.
1 ответ
После создания раздела вы переходите к настройке типа раздела: echo t;
, Затем, к следующему приглашению, вы выводите номер нужного типа раздела... но это не то, что fdisk
спрашивает. Он хочет знать номер раздела, тип которого вы хотите установить первым.
Итак, последовательность должна быть:
... echo t; echo $number_part; echo $format; ...
Обратите внимание, что когда существует только один раздел, вопрос о номере раздела будет пропущен, поскольку существует только один возможный раздел для установки типа.
Если вы хотите создать разделы в скрипте, вы можете рассмотреть возможность использования sfdisk
вместо. Его интерфейс намного больше подходит для написания сценариев.