我有一个 udev 规则,它使用如下表达式为串行设备(USB 串行端口)创建符号链接:SYMLINK+="MyDevice_%n"
。%n 分配从 0 开始的系统设备节点号。有没有办法修改编号 - 而不是 %n,也许是 %n+1?数学表达式在 udev 规则中不起作用。我可能能够使用 bash 脚本来执行等效操作,echo $((%n+1))
但我不确定如何在 udev 规则中执行此操作。有什么有用的建议吗?
答案1
使用 udev 规则 PROGRAM 字段执行 /bin/sh echo 表达式并使用 %c 捕获结果,如下所示...
PROGRAM="/bin/sh -c 'echo $((%n+1))'", SYMLINK+="MyDevice_%c"
如果 %n 为零,则生成的符号链接将具有MyDevice_$((%n+1))
或的等效项。$(()) 构造称为“算术扩展”,它会导致内容被评估为整数表达式。它是 shell 的语法元素。MyDevice_1
答案2
由于您不想从 开始MyDevice_0
,请使用++%n
从 1 开始计数器(MyDevice_1
)
PROGRAM="/bin/sh -c 'echo $((++%n))'", SYMLINK+="MyDevice_%c"