Смонтируйте карту с интерфейсом USB без разделов с помощью udev правила

[

] Возможно, это самый уродливый Bash-код, который я когда-либо писал, но...[

] [

IPv4_first=1.1.1.1
IPv4_second=2.2.2.2
IPv4_third=3.3.3.3

names=(${!IPv4_@})
eval "IPv4_all=(${names[@]/#/$})"
printf "'%s'\n" "${IPv4_all[@]}"

] [

]Смотри, Ма, никакого цикла![

] [

][][]${names[@]/#/$}[] предиктует[] []$[] к началу каждого элемента массива, сопоставляя пустую строку, привязанную к началу каждого элемента. Это дает массив разыменований переменных, который мы можем развернуть внутри []eval[], чтобы получить ссылки на переменные внутри инициализатора массива. Это должны быть две отдельные строки, так как нельзя применять несколько расширений параметров одновременно.[

] [

]Вывод:[

] [

'1.1.1.1'
'2.2.2.2'
'3.3.3.3'

] [

], как и ожидалось.[

] [

]Строку можно заменить на:[

] [

IPv4_all=($(eval "echo ${names[@]/#/$}"))

] [

]вместо []eval[]ling для присваивания массива. Не уверен, что это лучше или нет.[

] [

]Если значения переменных могут содержать пробелы или другие символы IFS, вы можете изменить eval:[

] [

eval "IPv4_all=($(printf '"$%s" ' "${names[@]}"))"

] [

]Это правильно удвоит все разыменования переменных.[

].

1
03.03.2015, 17:55
1 ответ

Попробуйте это:

# Set mount directory for partition-less sticks
SUBSYSTEM=="block", ACTION=="add", ENV{myBusID}!="", ENV{myDevID}!="", ENV{myPartition}=="", ENV{ID_PART_TABLE_TYPE}=="", ENV{dir_name}="usb-%k-%E{myBusID}-%E{myDevID}--%E{myPartition}"
2
27.01.2020, 23:37

Теги

Похожие вопросы