在规则文件中,通过传递参数"LABEL"和"DEVNAME"来执行脚本以进行挂载
ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh %E{ID_FS_LABEL} %E{DEVNAME}"
在usb_mount.sh文件中,将参数值打印为
echo "LABEL: $1 DEVNAME: $2" # this does not work reliably
某些设备具有空的标签字段,因此 DEVNAME 打印为标签。在 bash 脚本中,我们可以用双引号传递参数,即使参数为空,它也会起作用。
将参数传递给 udev 规则的等价物是什么?
此问题的解决方法可能是切换参数的顺序。有什么可靠的方法吗?
您应该能够使用单引号代替您提到的双引号:
ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh '%E{ID_FS_LABEL}' '%E{DEVNAME}'"
当心:我没有测试这个。也许变量替换会在单引号内失败......
引用man udev
关于关键"RUN"的内容:
程序名称和以下参数用空格分隔。 单引号可用于指定带空格的参数。
只需设置并查询 udev 的环境,这里有一个检查系统是否正在运行 VMWare 的示例:
cat /etc/udev/rules.d/99-vmware.rules
KERNEL=="id", SUBSYSTEM=="dmi", ATTR{sys_vendor}=="VMware, Inc.", ENV{VMWARE}='defined'
udevadm info -e | grep 'VMWARE='
E: VMWARE=defined