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