fdisk com um único comando falha na segunda execução

2

Eu rodei um script para formatar um disco com fdisk assim:

(echo n; echo p; echo $number_part; echo $firs_sector; echo $second_sector; echo t; echo $format; echo p; echo w) | fdisk /dev/$disk

quando executo pela primeira vez, o formato visto como:

 Device Boot        Start     End      Blocks   Id  System /dev/sdb1 
 2048              2099199     1048576   83          Linux

mas na próxima execução, o script falha:

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): 

Eu escrevi um eco para ver se a variável number_part contém o valor correto e se altera, mas isso não muda.

Eu estava debug com diferentes formas e eu vi que se eu apagar a parte: "echo t" do comando, funciona.

Eu não sei porque a primeira vez que funciona, mas no segundo, vejo um erro.

    
por BrennQuin 17.05.2018 / 02:32

1 resposta

3

Depois de criar uma partição, você está definindo o tipo de partição: echo t; . Então, para o próximo prompt, você está enviando o número do tipo de partição desejado ... mas não é o que fdisk está pedindo . Quer saber o número da partição cujo tipo você deseja definir primeiro.

Portanto, a sequência deve ser:

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

Note que quando há apenas uma partição, a questão do número da partição será omitida porque existe apenas uma partição possível para definir o tipo de.

Se você deseja criar partições em um script, considere usar sfdisk . Sua interface é muito mais adequada para scripts.

    
por 17.05.2018 / 15:17