Ошибка скрипта 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
0
задан 18 February 2014 в 13:48

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 | сделает это.
0
ответ дан 18 February 2014 в 13:48
  • 1
    Спасибо. Ну, Вы включили не-USB основной жесткий диск прежде, чем установить на вторичном жестком диске USB, правильно? Наконец I' m переустановка Linux на non-USB-rimary-HDD, that' s это. Возможность передать его LUKS зашифровала btw. – 3pic 7 August 2015 в 11:40

Другие вопросы по тегам:

Похожие вопросы: