有人可以提示为什么这样做吗?
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}"
您必须检查是否在指定了$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
,则说明您有问题。
来自man udev(现在为systemd v243,所以不确定5年前发布问题时它说了什么)
名称,SYMLINK,程序,所有者,组,模式,安全标记和运行字段支持简单的字符串替换。 RUN替换为在所有规则处理完毕之后,执行程序,允许使用由设置的设备属性较早的匹配规则。对于所有其他字段,替换为在处理单个规则时执行。
这表明您的第二条规则不起作用,因为ENV{}
不支持字符串替换,例如%c