[英]passing arguments to shell script from udev rules file
在規則文件中,通過傳遞參數“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
某些設備具有空的LABEL字段,因此DEVNAME被打印為標簽。 在bash腳本中,我們可以用雙引號傳遞args,即使args為null也可以工作。
將args傳遞給udev規則的相同之處是什么?
此問題的解決方法可能是切換參數的順序。 有可靠的方法嗎?
您應該能夠使用單引號而不是您提到的雙引號:
ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh '%E{ID_FS_LABEL}' '%E{DEVNAME}'"
小心:我沒有測試過這個。 也許變量替換會在單引號內失敗......
引用man udev
關於關鍵“RUN”:
程序名稱和后面的參數由空格分隔。 單引號可用於指定帶空格的參數。
只需設置並查詢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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.