Bash 脚本错误创建 mdadm 阵列

Bash 脚本错误创建 mdadm 阵列

我正在编写一个脚本来创建 md1 数组,首先检查数组是否存在,如果不存在,则创建它。我得到的命令是未找到命令 mdadm 和其他一些命令。脚本无法运行。

 #!/bin/bash
check="proc/mdstat | grep md1"

 if [ -e $check]; then
{
echo "MD1 is already here"
}
    else 
{
mdadm --create --verbose /dev/md1 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1 <<EOF
yes
EOF
if [ $? -eq 0 ]; then
    echo  "MD1 was created"
elif [$? -ne 0]; then
    echo "A fault has occured"
fi
}
fi

答案1

您的check变量完全错误。它将文字字符串分配"proc/mdstat | grep md1"check

要修复此问题,请使用以下命令:

if grep -q -e 'md1:' -e 'md127:' /proc/mdstat; then
    echo "MD1 is already here"
else 
    if echo yes | mdadm --create --verbose /dev/md1 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1; then
        echo  "MD1 was created"
    else
        echo "An error has occurred"
    fi
fi

其他几点说明:

  • Bash 不强制要求多行语句使用括号,因此省略括号通常更为简洁。不过,您应始终确保缩进正确。
  • Bash 的if语句不需要[ .. ]构造。它可以使用任何命令;如果命令以 0 退出,则视为真,否则视为假。
  • 语法<< EOF是多余的,简单的echo yes |就可以了。

相关内容