如何使用 bash 脚本自动回答交互式 cli 程序(不是脚本)?

Mas*_*gol 7 command-line bash scripts parted

我已经用谷歌搜索了这个,几乎所有我能找到的就是回答一个 bash 脚本,这对我不起作用。我找到的答案告诉我要做:

echo "yes" | ./script
Run Code Online (Sandbox Code Playgroud)

或者

./script <<< yes
Run Code Online (Sandbox Code Playgroud)

或类似的东西。它对我不起作用。我的猜测是因为我想做的是自动回答一个可执行程序,而不是一个脚本。更具体地说,我想自动回答parted。这里

parted -a optimal /dev/sda mklabel msdos
Warning: The existing disk label on /dev/sda will be destroyed and
all data on this disk will be lost. Do you want to continue?
Yes/No? _
Run Code Online (Sandbox Code Playgroud)

我试着做

echo "yes" | parted -a optimal /dev/sda mklabel msdos
Run Code Online (Sandbox Code Playgroud)

parted -a optimal /dev/sda mklabel msdos <<< yes
Run Code Online (Sandbox Code Playgroud)

两种方法都没有用。那些没有回答yesparted提示。

那么,如何在parted不使用 bash 脚本的情况下自动回答该提示?

kos*_*kos 10

使用parted,您只需添加-s选项:

parted -a optimal -s /dev/sda mklabel msdos
Run Code Online (Sandbox Code Playgroud)

Trustyman页面获取parted

[...]
        -s,  --script
              从不提示用户干预
[...]

  • @BagolDaplun 在这种情况下永远不要问意味着使用默认值。 (3认同)