Монтирование жесткого диска через bash

Я пытаюсь написать bash-скрипт, который проверяет, с каким sda / sdb / sdc связан мой жесткий диск, и монтирует мой жесткий диск в зависимости от того, какой он есть.

if (( `sudo fdisk -l | grep /dev/sdc | grep "1.8 TiB"` )) 
        then
            echo sdc1 with 2TiB found.
            sudo mount /dev/sdc1 /mnt/2tbOrange/
fi

Я получаю следующую ошибку «деление на 0» и не могу понять, почему.

 ((: Disk /dev/sdc: 1.8 TiB, 2000365289472 bytes, 3906963456 sectors : division by 0 (error token is "dev/sdc: 1.8 TiB, 2000365289472 bytes, 3906963456 sectors ")
1
задан 2 July 2018 в 20:39

1 ответ

Причина, по которой вы получаете эту ошибку, заключается в том, что двойные скобки ((...)) предназначены для арифметики, поэтому косая черта указывает на деление. Для получения более подробной информации см. В чем разница между операторами Bash [[vs [vs (vs ((? ) в Unix & amp; Linux.

Как обсуждалось в комментариях, вы можете использовать grep -q. Возвращает true, если совпадение найдено, и false в противном случае.

if sudo fdisk -l | grep /dev/sdc | grep -q "1.8 TiB"; then ...

Тем не менее, это проблема XY . Код, который вы написали, не делает то, что вы описать. Из быстрого поиска, кажется, лучшее решение - использовать mount -L или mount -U для монтирования по метке файловой системы или UUID, соответственно. Вам не нужно анализировать выходные данные fdisk -l, и вы не Мне не нужно заявление if. Если вам нужно больше деталей, дайте мне знать, возможно, вам придется задать новый вопрос.

0
ответ дан 2 July 2018 в 20:39

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

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