有谁能给予我一个提示,为什么这是有效的?
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}"
2条答案
按热度按时间qc6wkl3g1#
您必须检查是否提供了一个
$result
来替换您指定的%c
。Fromman udev:如果您没有提供正确的
$result
,那么这就是您的问题。yftpprvb2#
这是一个老问题,但我遇到了一个类似的问题,只是反过来。问题可能是您在RUN中看到的内容与比较期间发生的内容不匹配。而它的原因是这个美丽的宝石(从曼udev):
NAME、SYMLINK、PROGRAM、OWNER、GROUP、MODE和RUN字段支持简单的类似printf的字符串替换。RUN格式的字符会在所有规则都处理完后应用,也就是在程序执行之前。它允许使用由早期匹配规则设置的设备属性。对于所有其他字段,在处理单个规则时应用替换。
另一个规则可能在稍后更改了您的%c,而在您的比较过程中,它持有另一个值。我不认为比较是在程序之前完成的。
我建议在这种情况下使用
udevadm test
。