Udev:比较中使用结果

问题描述 投票:0回答:2

有人可以提示为什么这样做吗?

ACTION=="add", SUBSYSTEM=="block", PROGRAM="/bin/echo -n 12345", ENV{ID_FS_UUID}=="12345", RUN+="/path/to/some/script.sh %k %c $env{ID_FS_UUID}"

这不是吗?

ACTION=="add", SUBSYSTEM=="block", PROGRAM="/bin/echo -n 12345", ENV{ID_FS_UUID}=="%c", RUN+="/path/to/some/script.sh %k %c $env{ID_FS_UUID}"
linux udev
2个回答
0
投票

您必须检查是否在指定了$result的地方提供要替换的%c。来自man udev

$result, %c
    The string returned by the external program requested with PROGRAM.
    A single part of the string, separated by a space character, may be
    selected by specifying the part number as an attribute: "%c{N}". If
    the number is followed by the "+" character, this part plus all
    remaining parts of the result string are substituted: "%c{N+}".

如果您没有提供适当的$result,则说明您有问题。


0
投票

来自man udev(现在为systemd v243,所以不确定5年前发布问题时它说了什么)

名称,SYMLINK,程序,所有者,组,模式,安全标记和运行字段支持简单的字符串替换。 RUN替换为在所有规则处理完毕之后,执行程序,允许使用由设置的设备属性较早的匹配规则。对于所有其他字段,替换为在处理单个规则时执行。

这表明您的第二条规则不起作用,因为ENV{}不支持字符串替换,例如%c

© www.soinside.com 2019 - 2024. All rights reserved.