自动确认 raid5 阵列脚本

use*_*936 1 bash raid command ubuntu-12.04 mdadm

我正在编写一个安装阵列 raid5 的脚本。当脚本询问:是否要继续创建数组时,我在插入 auto=yes 时遇到问题。我尝试了 --auto=yes (http://www.linuxmanpages.com/man8/mdadm.8.php),但非常不确定将其放置在哪里。

#!/bin/bash
mdadm mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1

if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi
Run Code Online (Sandbox Code Playgroud)

MLS*_*LSC 5

1) 可以使用HEREDOC来解决此类问题。

例如对于passwd命令:

#!/bin/bash
passwd user <<EOF
mypassword
mypassword
EOF
Run Code Online (Sandbox Code Playgroud)

您还可以运行脚本并输入heredoc

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

更新:

这终于是你想要的了

如果您有一个问题:

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

您还可以:

#!/bin/bash
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1 <<EOF
yes
EOF
Run Code Online (Sandbox Code Playgroud)

2) 还有另一种解决方案:

yes | command-that-asks-for-input
Run Code Online (Sandbox Code Playgroud)

或者,如果需要大写“Y”:

yes Y | command-that-asks-for-input
Run Code Online (Sandbox Code Playgroud)