Linux
帶有單個命令的 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
。它的界面更適合編寫腳本。