Есть ли способ использовать ветку «если», чтобы проверить, подключен ли USB-накопитель?

#linux #bash #shell #ubuntu

Вопрос:

Есть ли такой способ, как вы можете использовать ветку «если», чтобы проверить, подключен ли USB-накопитель? И если флешка не подключена, то должно быть выдано сообщение.

Что-то вроде:

 if [-e /sdb1]
then
cp /home/backup/* /sdb1
rm -r /home/backup/*
echo "your files are successfully transferred."
else
echo "please be sure, if your USB-Stick is connected"
fi
 

Комментарии:

1. [ это приказ. [-e это (скорее всего) не так. Вполне возможно , что у вас есть определенная функция с именем [-e или файл в вашем ПУТИ с именем [-e , но маловероятно.

Ответ №1:

Нет, точка монтирования существует независимо от того, подключено USB-устройство или нет.

Чего-то подобного должно быть достаточно:

 if [[ $(df | grep "/sdb1") amp;amp; -d /sdb1 amp;amp; -w /sdb1 ]]
 

Это, конечно, если вы действительно создали каталог /sdb1/ .

Ответ №2:

Используйте findmnt утилиту (по крайней мере, установленную по умолчанию на RH и Ubuntu)

 findmnt /backup
echo $?
1
 

Возврат 1 означает, что он не установлен.

Вот пример кода, в котором он используется с утверждением if

 findmnt /backup >/dev/null
if [ $? = 0 ]; then
    echo "It's mounted all right"
else
    r=$(( RANDOM % 4 ))
    echo "USB is not mounted."
    case $r in
        0) echo "Check the couch cushions."
           ;;
        1) echo "I think I saw it in the kitchen."
           ;;
        2) echo "Sign up for Prime and get free shipping!"
           ;;
        3) echo "The dog ate it."
           ;;
    esac
fi
 

Комментарии:

1. Писать намного чище if findmnt ...; then ...; else ...; fi . Избегайте явной проверки $? , когда это возможно.