Intereting Posts
Вопрос о wifi на Linux VM Как определить, является ли скрытый текстовый слой в файле PDF из OCR или нет? Linux: как подключить диск из командной строки почему grub2 игнорирует опции ядра при загрузке с el torito на CD? Использование sched_autogroup_enabled на рабочем столе Как обнаружить, что все дочерние процессы, запущенные в скрипте, закончились? Количество файлов в каталоге Как найти недостающие файлы между определенным диапазоном дат? udev создает правильные правила, но права исчезают, как только я пытаюсь получить доступ к файлам через C ++ Как я могу автоматически перезапустить gnome-shell, выходящий из режима приостановки? Используя dd для ноль таблицы GPT с диска, сколько байтов писать? Есть ли способ определить сигнал, который был пойман изнутри функции ловушки bash? отключить уведомление по электронной почте при входе в систему Мне нужно проверить список каталогов, если он содержит каталог, новее, чем за 1 месяц до этого cinnamon crashes после установки драйвера nvidia

ассоциативный массив с двумя строками

возможно ли закодировать простой массив с ключом и значением со строкой в ​​[ключевой] части?

#!/bin/bash -x wget url://stringlist1 wget url://stringlist2 #cat/sed some stuff .... declare -A targetarray loop $resultfromstringlist1 in strlistarray1 # filled with ( aka1 kaka hu3hu blabla ) loop $resultfromstringlist2 in strlistarray2 # filled with ( Thoralf Mirkoslav Pjotr Jan ) i=0; for e in strlistarray1 do targetarray[$e]="${strlistarray2[$i]}" ((++i)) done #wanted output echo ${targetarray[aka1]} -> Thoralf exit 

я надеюсь, теперь более ясно

$ e остается на $ e, его не заполняет строка из массива strlist1

с ручной настройкой, но не с версией loop bash – 4.3

 #!/bin/bash unset aaaa declare -A aaaa str1="hans" str2="klaus" aaaa[$str1]="online"; aaaa[$str2]="offline"; echo ${aaaa[$str1]} 

Это демонстрирует, как заполнять и запрашивать ассоциативный массив targetarray с ключами и значениями из двух простых массивов strlistarray1 и strlistarray2 :

 #!/bin/bash declare -a strlistarray1=( aka1 kaka hu3hu blabla ) declare -a strlistarray2=( Thoralf Mirkoslav Pjotr Jan ) declare -A targetarray i=0 for e in "${strlistarray1[@]}"; do targetarray["$e"]="${strlistarray2[i]}"; ((i++)) done for e in "${!targetarray[@]}"; do echo $e --- ${targetarray[$e]} done 

Чтобы получить содержимое файла (при условии, что одна запись в строке), попробуйте

 IFS=$'\n' declare -a strlistarray1=($(< yourfile)) unset IFS 

Чтобы получить данные из URL-адреса, попробуйте

 IFS=$'\n' declare -a strlistarray1=($(wget -qO - 'http://yoururl')) unset IFS 

(Для предотвращения проблем с извлеченными данными, содержащими пробелы, требуется установка IFS . Если вы уверены, что ваши входные данные не имеют пробелов, как и в вашем вопросе, два оператора IFS могут быть опущены.)