Linux

帶有單個命令的 fdisk 在第二次執行中失敗

  • May 17, 2018

我執行了一個腳本來使用 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。它的界面更適合編寫腳本。

引用自:https://serverfault.com/questions/912603