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

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

2
задан 17 May 2018 в 03:38
1 ответ

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

Таким образом, последовательность должна быть:

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

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

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

3
ответ дан 3 December 2019 в 10:33

Теги

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