2016-10-17 3 views
1

Мне нужно работать с выходом инструмента Java, который возвращает структуру данных карты, которая выглядит как HashMap<String, ArrayList<String>. Я должен работать с BASH, и я попытался объявить его как ассоциативный массив, что очень похоже на карту. Объявление ассоциативного массива в bash должно быть в одной строке, я пытаюсь сделать это следующим образом.Bash ассоциативный массив со списком как значение

ARRAY=(["sem1"]=("first name" "second name") ["sem2"]=("third name") ["sem3]=OTHER_LITS) 

Но это создает следующее сообщение об ошибке:

bash: syntax error near unexpected token `(' 

я могу определить эту строку за строкой, но я хочу, чтобы он в одной строке. Как я могу определить ассоциативный массив в bash только в одной строке?

+0

Нет карта/словарь функциональность в Баш ???? – Oni1

+2

Нет никаких многомерных массивов в BASH – anubhava

+0

Любое предложение, как решить мою проблему? – Oni1

ответ

1

В отсутствие поддержки многомерного массива в BASH вы можете использовать ассоциативный массив . Каждый key в ассоциативном массиве конкатенация из map-index,array-list-index:

# use one line declaration 
declare -A array=([sem1,0]="first name" [sem1,1]="second name" [sem2,0]="third name" [sem3,0]="foo bar") 

# loop thrpugh the map array 
for i in "${!array[@]}"; do echo "$i => ${array[$i]}"; done 
sem2,0 => third name 
sem1,0 => first name 
sem1,1 => second name 
sem3,0 => foo bar 
Смежные вопросы