fdisk 单个命令在第二次执行时失败

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

我编写了一个 echo 来查看变量 number_part 是否包含正确的值以及是否发生变化,但它并没有改变。

我使用不同的形式进行调试,我发现如果我删除命令的部分:“echo t”,它就可以起作用。

我不知道为什么第一次可以成功但第二次却出现错误。

答案1

创建分区后,您将继续设置分区类型:echo t;。然后,在下一个提示符下,您将输出所需的分区类型编号...但是这不是fdisk.它想知道您要设置其类型的分区号第一的。

因此顺序应该是:

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

请注意,当只有一个分区时,将省略分区号问题,因为只有一个可能的分区可以设置类型。

如果您想在脚本中创建分区,您可以考虑使用sfdisk。它的界面更适合编写脚本。

相关内容