在udev规则中传递参数

时间:2012-04-23 16:39:26

标签: bash udev

我在udev中写了2条规则,用于usb添加和删除2个文件。

SUBSYSTEM=="usb", ACTION=="add", RUN+="/u/usb_added %b"
SUBSYSTEM=="usb", ACTION=="remove", RUN+="/u/usb_remove %b"

我为这些规则创建了两个不同的脚本,这些脚本采取了适当的操作(做同样的事情)。

我希望通过传递值(添加,删除)来组合这些规则(然后是动作脚本),然后通过if条件检查新脚本。然后采取适当的行动。

所以我的问题是如何在RUN + =“/ u / usb_status ??”中传递参数

我将如何在新脚本中获取这些参数,然后在if条件下使用。

提前感谢。

2 个答案:

答案 0 :(得分:2)

我通过在执行脚本后写单词来解决它。

例如:

SUBSYSTEM=="usb", ACTION=="add", RUN+="/u/usb_added Parameter %b"

所以我只是用它作为:

SUBSYSTEM=="usb", ACTION=="add", RUN+="/u/usb_added ADDED %b"

并且在执行脚本(在这种情况下是usb_added)中我得到了如下:

CHECK=$@

现在这个CHECK的值是“ADDED”,实际上是从Udev规则传递的。

答案 1 :(得分:1)

据我所知,你可以这样做:

SUBSYSTEM=="usb", RUN+="scripts %b"

然后在脚本中使用:

if [ $ACTION == "add" ];then
  .....
elif [ $ACTION == "remove" ]lthen
  .....

但这似乎受到了udev版本的限制......我不知道,试试吧。