2012-12-04 35 views
1

在規則文件的腳本是通過使參數「LABEL」和「DEVNAME」用於安裝傳遞參數到從udev規則殼腳本文件

ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh %E{ID_FS_LABEL} %E{DEVNAME}" 

在usb_mount.sh文件打印參數值來執行as

echo "LABEL: $1 DEVNAME: $2" # this does not work reliably 

某些設備具有空的LABEL字段,因此將DEVNAME打印爲標籤。在bash腳本中,我們可以通過雙引號傳遞參數,即使參數爲null,它也可以工作。

將參數傳遞給udev規則的等效參數是什麼?

此問題的解決方法可能是切換參數的順序。有沒有可靠的方法?

回答

4

你應該能夠使用單引號,而不是你所提到的雙引號:

ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh '%E{ID_FS_LABEL}' '%E{DEVNAME}'" 

請注意:我沒有測試這一點。也許變量替換將單引號內的失敗......

man udev引述有關密鑰「RUN」:

程序名稱和下面的參數用空格分開。 單引號可用於指定帶空格的參數。

1

只需設置和查詢的udev的ENV,下面的例子來檢查系統運行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