Как подсчитать количество аргументов, передаваемых в условиях?

Итак, суть в том, что 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 сам размонтировал бы устройство без разрешений, диалогов и т.д.

0
19.12.2018, 14:18
1 ответ

Сначала посчитайте свои вещи, а потом отдельно сообщите результат:

#!/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)/$# ))"

Нет необходимости тестировать $#, так как цикл (, если он написан так, как указано выше, )вообще не будет выполняться, если не будут переданы никакие аргументы.

1
28.01.2020, 04:07

Теги

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