¿Acceder a una variable por nombre en udev?

Estoy intentando acceder al tipo de partición (el campo de un byte en el logging de inicio maestro) en udev, de modo que pueda establecer la propiedad y los permissions según el tipo de partición. El desafío es, por supuesto, que si bien quiero configurar el propietario, etc. de sda1 , la tabla de particiones es en realidad parte de su padre, sda . (Por supuesto, en realidad hay muchos discos, no solo sda)

Logré get el tipo de partición de todas las particiones primarias importadas en la database udev ingresando cada disco. Esto agrega cuatro inputs ENV a cada disco, uno por posible partición primaria. Se ven así, como se muestra en udevadmin info --query=all :

 E: LOCAL_PARTTYPE_P1=fd E: LOCAL_PARTTYPE_P2=da E: LOCAL_PARTTYPE_P3=00 E: LOCAL_PARTTYPE_P4=00 

A continuación, puedo get acceso a los que están en el dispositivo de partición (sda1) utilizando un IMPORT{parent} . El número de partición (1-4) se puede encontrar en ATTR{partition} . El problema es get el tipo de esta partición.

Parece que ENV{LOCAL_PARTTYPE}="$env{LOCAL_PARTTYPE_P$attr{partition}}" debería hacer esto, pero no funciona. Si quita los $ principales, el nombre generado es correcto, udev simplemente no hará la búsqueda indirecta.

La única forma que he encontrado para hacerlo es esta línea incómoda: IMPORT{program}="/bin/sh -c 'echo LOCAL_PARTTYPE=$$LOCAL_PARTTYPE_P$attr{partition}'" que funciona porque las inputs ENV se pasan como entorno variables a los progtwigs que udev ejecuta, y por lo tanto, el shell puede hacer la expansión y repetir el eco de inmediato.

También podría duplicar todo para cada número de partición posible (posible, ya que solo estoy usando particiones primarias), pero eso me parece aún peor:

 $ATTR{partition}=="1", $ENV{LOCAL_PARTTYPE_P1}=="da", OWNER="grid", ... $ATTR{partition}=="2", $ENV{LOCAL_PARTTYPE_P2}=="da", OWNER="grid", ... ⋮ 

¿Existe una forma correcta de hacer esto?

Solutions Collecting From Web of "¿Acceder a una variable por nombre en udev?"