我如何编写脚本 mkfs 询问“是整个设备,而不仅仅是一个分区!是否继续?”

我如何编写脚本 mkfs 询问“是整个设备,而不仅仅是一个分区!是否继续?”

我正在尝试创建一个格式化 Amazon EC2 EBS 卷的脚本,以便我可以安装它。

从命令行来看,它看起来像这样:

> mkfs -q -t ext4 /dev/sdf
/dev/sdf is entire device, not just one partition!
Proceed anyway? (y,n) 

(该命令是正确的;就我的目的而言,不需要创建分区表)

我的问题:因为这个命令应该在自动脚本中运行,所以我不能在终端上提出这个问题;没有人会回答,脚本会挂起。我该如何避免这种情况?

我试过:

> echo y | mkfs -q -t ext4 /dev/sdf

但这不起作用。-q 选项也没什么区别。

答案1

来自手册页

   -F     Force mke2fs to create a filesystem, even if the specified device is not a partition on a block special device, or  if  other
          parameters do not make sense.

因此,请mkfs.ext4直接调用而不是通过mkfs,并添加-F参数以忽略此警告。

答案2

expect就是您要找的内容。尝试以下操作:

#!/usr/bin/expect

spawn mkfs -q -t ext4 /dev/sdf
expect "/dev/sdf is entire device, not just one partition!\nProceed anyway? (y,n)"
send -- "y\r"

expect eof

相关内容