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 вместо. Его интерфейс намного больше подходит для написания сценариев.

Другие вопросы по тегам