关于用shell调用交互式命令的问题

关于用shell调用交互式命令的问题

现在想编写一个脚本 它的内容是调用fdisk命令将现有硬盘的所有分区删除,然后按自定义大小在当前硬盘上新建3个分区,但是fdisk命令是交互式的~      就是你在命令行输入一个参数,它执行一点,然后你再输入一个参数,它再执行一点.....怎么完成这个shell 哦      
复制内容到剪贴板
代码:
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4017 0][/color] [color=red]; cat file
[/color]p
d
4
p
q
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4017 0][/color] [color=red]; fdisk /dev/hda < file
[/color]
The number of cylinders for this disk is set to 4863.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):
Disk /dev/hda: 40.0 GB, 40000000000 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1216     9767488+  83  Linux
/dev/hda2            1217        3555    18788017+  83  Linux
/dev/hda3            3556        4830    10241437+  83  Linux
/dev/hda4            4831        4863      265072+  82  Linux swap / Solaris

Command (m for help): Partition number (1-4):
Command (m for help):
Disk /dev/hda: 40.0 GB, 40000000000 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1216     9767488+  83  Linux
/dev/hda2            1217        3555    18788017+  83  Linux
/dev/hda3            3556        4830    10241437+  83  Linux

Command (m for help):
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[4017 0][/color] [color=red]; o
[/color]
      
sfdisk 可能更好用一些      
我的意思是说 我想把每一步传给fdisk的参数一次性的传给shell脚本,然后只运行一次脚本来实现对指定盘的删除分区后再建立分区的操作,运行脚本后就不再交互式的传给脚本参数了~~~因为这个脚本是需要被c程序调用的.
还请各位高手帮忙!      
dearvoid师兄的意思不是很明白哦,能否解释一下 好么?