如何在没有用户提示的情况下在脚本中运行parted mklabel?

如何在没有用户提示的情况下在脚本中运行parted mklabel?

我正在尝试编写一个 bash 脚本,它将使用 parted 实用程序对驱动器进行重新分区。由于它在脚本中运行,我希望分开不提示用户输入(或者,有一种方法来回答这些提示)。

最初,我尝试将“-s”或“--script”选项传递给 parted,但它并没有像我预期的那样工作。当我尝试运行parted $DRIVE -s mklabel gpt脚本时,我期望 parted 会用“i”、“y”和“i”(忽略、是、忽略)三个提示来回答它给出的警告。然而,我的脚本停止执行并显示以下消息:Error: Partition(s) on /dev/nvme1 are being used.

手动运行该命令会显示该消息,并允许我传递响应“i”以忽略警告并继续。通过一些谷歌搜索,我了解到,在使用 -s 选项运行时,parted 将采用默认响应。我假设出现此警告时,默认选项是取消,以免意外损坏驱动器。

当运行脚本而不将 -s 传递给 parted 时,我会在终端提示输入,并且在给出输入后,脚本的其余部分运行良好。然后我尝试像这样使用 echo 来管道传输响应,echo "i\ny\ni" | repart.sh但这似乎也不起作用。

有没有办法覆盖此默认值以获得所需的行为?如果没有,还有其他方法可以实现这一目标吗?

对于上下文:运行此脚本的目标计算机正在运行 Ubuntu 18.04.3 LTS

注意:虽然我可以安装 Ubuntu 上非标准的其他实用程序,但我不想这样做。

编辑:感谢@chexum,我找到了解决方案!我修改了我的脚本,在运行parted:之前调用wipefs实用程序,wipefs -a -f $DRIVE然后修改了我的parted命令,将'i'通过管道传输到其中,以回答剩下的一个提示:yes "i" | parted $DRIVE mklabel gpt。现在它的工作完全自动化。请注意,如果您不小心,使用wipefs实用程序会带来自己的风险,这个解决方案非常适合我的目的,但可能不太适合其他人。

相关内容