Запустите контейнер с доступом к устройству, не запуская его с правами root.

Проблема в том, что раскрытие фигурной скобки происходит до раскрытия переменной. Как поясняется вman bash:

The order of expansions is: brace expansion; tilde expansion, parameter and variable expansion, arithmetic expansion, and command substitution (done in a left-to-right fashion); word splitting; and pathname expansion.

Это означает, что когда у вас есть что-то вроде $var, которое содержит {1..3}, и выполняете echo "$var", оболочка ищет возможные раскрытия фигурных скобок перед расширением переменной до ее значения. Поскольку фигурные скобки находятся в переменной, это означает, что в этот момент оболочка не видит фигурных скобок, поэтому раскрытие скобок не выполняется.

Одним из обходных путей может быть evalпеременная, если она представляет собой диапазон. Добавьте эти строки перед циклом for:

if [[ $RANGE =~ ^[0-9]+\.\.[0-9]+$ ]]; then
        RANGE=$(eval echo {$RANGE})
fi

Теперь, в более общем плане, рекомендуется избегать использования имен переменных ЗАГЛАВНЫМИ БУКВАМИ в сценариях оболочки. Переменные среды обычно пишутся с заглавной буквы, и это может привести к путанице, если вы используете то же имя, что и определенная переменная среды. Поэтому используйте имена переменных в нижнем регистре, чтобы быть в безопасности.

Кроме того, эта программа очень утомительна при отладке и в равной степени утомительна в использовании. Не запрашивайте у пользователя ввод во время выполнения! Вместо этого измените свой сценарий и заставьте его принимать аргументы. Ввод значений сложный, раздражающий, подверженный ошибкам и не может быть автоматизирован.

0
27.10.2019, 18:58
1 ответ

Я не могу вспомнить, как сделать сопоставление пользователей в докере. Однако я бы просто использовал права доступа к файлам :, добавил новую группу(zigbee_device)к хосту, установил разрешение на устройстве, чтобы пользователи в этой группе могли читать и писать. Затем запустите контейнер с ним как с одной из его групп.

0
28.01.2020, 03:10

Теги

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