7

rules ファイルでは、マウント用の引数「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 スクリプトでは、引数を二重引用符で囲むことができ、引数が null の場合でも機能します。

args を udev ルールに渡すのと同じことは何ですか?

この問題の回避策は、引数の順序を入れ替えることです。信頼できる方法はありますか?

4

2 に答える 2

13

あなたが言及した二重引用符の代わりに重引用符を使用できるはずです:

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

注意: 私はこれをテストしていません。単一引用符内で変数の置換が失敗する可能性があります...

man udevキー「RUN」についての引用:

プログラム名とそれに続く引数はスペースで区切ります。単一引用符を使用して、スペースを含む引数を指定できます。

于 2013-02-20T14:39:25.947 に答える
3

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
于 2014-10-09T14:43:27.000 に答える