Итак, суть в том, что Nautilus использует GVFS, и вам нужно указать udev использовать GVFS при чтении записей fstab, вы можете сделать это с помощью:
/dev/block-device /mount/point auto x-gvfs-show,ro 0 0
x-gvfs-show
укажет udev и всем заинтересованным использовать помощник GVFS для монтирования файловой системы, так что у gvfs будет весь контроль над монтированием, монтированием, перемещением точек монтирования и т.д.
Давайте посмотрим, понимаем ли мы, как монтируются диски в современных системах Linux с графическим интерфейсом (в частности, в Nautilus):
Nautilus использует GVFS в качестве бэкенда для монтирования FTP, SMB, блочных устройств и других вещей в файловую систему. Инструмент, который GNOME разработал для таких предложений, называется Disks, и именно он изменяет поведение GVFS. Теперь начинается самое интересное.
Nautilus игнорирует все, что не было смонтировано с помощью GVFS (например, с помощью fstab) и дает вам очень рудиментарный контроль над этим с помощью udev (Nautilus не просит GVFS размонтировать или смонтировать устройства, которые не были смонтированы с помощью GVFS, это включает udev, fstab, mount и любой другой blob), например, просто размонтировать и смонтировать. Используя разрешения и опции, хранящиеся в fstab/udev, вы можете использовать эти файловые системы соответствующим образом, но вы не можете изменить поведение с помощью GVFS. Если что-то было смонтировано с помощью sudo mount -o rw /dev/sda3
, nautilus сообщает udev, что у него нет прав на изменение точки монтирования, поэтому он передает ответственность udev, который в свою очередь запрашивает разрешения у polkit. Если бы вы использовали GVFS, nautilus сам размонтировал бы устройство без разрешений, диалогов и т.д.
Сначала посчитайте свои вещи, а потом отдельно сообщите результат:
#!/bin/bash
for a do
if (( a >= 10 && a < 12 )); then
pass=$(( pass + 1 ))
elif (( etc. for the other conditions ))
fi
done
printf '%d passed (%d%%)\n' "$pass" "$(( (100*pass)/$# ))"
Нет необходимости тестировать $#
, так как цикл (, если он написан так, как указано выше, )вообще не будет выполняться, если не будут переданы никакие аргументы.