#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
. Избегайте явной проверки$?
, когда это возможно.