簡體   English   中英

從udev規則文件向shell腳本傳遞參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM