У меня есть правило udev, которое создает символическую ссылку для последовательных устройств (последовательных портов USB), используя такое выражение: SYMLINK+="MyDevice_%n" . % N назначает номер узла системного устройства, начиная с 0. Есть ли способ изменить нумерацию - вместо% n, возможно,% n+1? Математические выражения не работают в правиле udev. Я мог бы использовать скрипт bash для выполнения эквивалента echo $((%n+1)) но я не уверен, как это сделать в правиле udev. Любые полезные предложения?

2 ответа2

1

Используйте ++%n для запуска счетчика с 0 (MyDevice_0)

PROGRAM="/bin/sh -c 'echo $((++%n))'", SYMLINK+="MyDevice_%c"

1

Используйте поле PROGRAM для правил udev, чтобы выполнить эхо-выражение /bin /sh и захватить результат, используя% c, например так ...

PROGRAM="/bin/sh -c 'echo $((%n+1))'", SYMLINK+="MyDevice_%c"

Полученная символическая ссылка будет иметь эквивалент MyDevice_$((%n+1)) или MyDevice_1 если% n равно нулю. Конструкция $(()) называется "арифметическим расширением" и позволяет оценивать содержимое как целочисленное выражение. Это синтаксический элемент оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .