#!/bin/bash
mount | grep 'sda[1-5]'
if [ $? = 0 ]
then
echo -e "its already mounted ! type u to unmount :\c"
read word
if [ $word = "u" || $word = "U" ]
then
umount /home/shady/Desktop/mountpoint1
umount /home/shady/Desktop/mountpoint2
fi
fi
if [ $? = 1 ]
then
mount /dev/sda1 /home/shady/Desktop/mountpoint1
mount /dev/sda5 /home/shady/Desktop/mountpoint2
echo -e "all mounted !!"
fi
its not even entering the first if statement
Существует несколько проблем. Один [ $? = 0 ]
должен быть [ $? -eq 0 ]
потому что $?
число возвратов, но =
сравнение для строк (текст). Во-вторых, использовать [ $word = "u" ] || [ $word = "U" ]
или используйте [ $word = "u" -o $word = "U" ]
. Читайте больше на этих опциях в man test
Однако я предложил бы простое решение: использовать udisksctl
утилита вместо media
. Это более просто и делает много материала автоматически для Вас. На самом деле это - бэкенд для файлового менеджера Ubuntu по умолчанию, Наутилуса.
Например, если я хотел смонтироваться /dev/sda5
$ udisksctl mount -b /dev/sdb5
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625
Получите информацию, где смонтированный объем:
$ udisksctl info -b /dev/sdb5 | awk '/MountPoints/'
MountPoints: /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625
И здесь размонтировался
$ udisksctl unmount -b /dev/sdb5
Unmounted /dev/sdb5.
Эта строка была Вашей основной проблемой:
if [ $word = "u" || $word = "U" ]
Я исправил условное выражение и привел в порядок управляющую структуру ниже:
#!/bin/bash
mount | grep 'sda[1-5]'
if [ $? -eq 0 ]
then
echo "Volumes are already mounted."
read -p "Please type 'u' to unmount:" word
if [ "$word" = "u" ] || [ "$word" = "U" ]
then
echo 'User wishes unmount. Attempt umount here.'
fi
else
echo 'Volumes unmounted. Attempt mount here.'
fi
Посмотрите эту страницу операторов удара для примеров.