Назад | Перейти на главную страницу

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», она сработает.

Я не знаю, почему в первый раз это работает, но во второй появляется ошибка.

После создания раздела вы переходите к настройке типа раздела: echo t;. Затем в следующем приглашении вы выводите номер желаемого типа раздела ... но это не то fdisk спрашивает. Он хочет знать номер раздела, тип которого вы хотите установить первый.

Итак, последовательность должна быть такой:

... echo t; echo $number_part; echo $format; ...

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

Если вы хотите создать разделы в скрипте, вы можете рассмотреть возможность использования sfdisk вместо. Его интерфейс гораздо больше подходит для написания сценариев.