是否有一种简单的方法可以在两个不同的规则之间进行交流, 一个用于ADD事件,另一个用于BIND事件在同一设备上?
首先执行ADD规则,然后执行BIND规则。我想根据ADD规则设置的变量来更改BIND规则的行为。
到目前为止我尝试过的事情:
我尝试在ADD规则上使用ENV{variable}="1"
,并在BIND规则上使用ENV{variable}=="1"
对其进行匹配。不幸的是,此变量在BIND规则中不再可用,看起来这些ENV变量的生存期仅限于同一设备和同一操作上的那些规则(因此,仅ADD规则)。
ACTION=="add", ENV{MODALIAS}=="abc", \
ENV{variable}="1"
ACTION=="bind", ENV{MODALIAS}=="abc", \
ENV{variable}=="1"
ACTION=="bind", ENV{MODALIAS}=="abc", \
ENV{variable}=="2"
我一直认为ENV变量在udev中随处可见,但这似乎是错误的...
我还尝试在ADD规则中设置ATTR{foo}="bar"
,并使用ATTRS{foo}=="bar"
在BIND规则中对其进行匹配。也不起作用。
ACTION=="add", ENV{MODALIAS}=="abc", \
ATTR{variable}="1"
ACTION=="bind", ENV{MODALIAS}=="abc", \
ATTRS{variable}=="1"
ACTION=="bind", ENV{MODALIAS}=="abc", \
ATTRS{variable}=="2"
我不知道为什么这行不通。
到目前为止,唯一可行的方法是将变量的值echo
放入ADD规则中的文件中(使用RUN
),然后使用{在BIND规则中将其读出{1}}和PROGRAM
。
RESULT
还有其他想法吗?
这是https://superuser.com/questions/1424242/udev-communicate-between-two-rules的副本-不幸的是,我认为超级用户不是正确的提问位置。