10
Próbuję napisać skrypt w bashu przy użyciu asocjacyjnej tablicy. Mam plik o nazwie data
:Bash czytanie z pliku do asocjacyjnej tablicy
a,b,c,d,e,f
g,h,i,j,k,l
Poniższy skrypt:
oldIFS=${IFS}
IFS=","
declare -A assoc
while read -a array
do
assoc["${array[0]}"]="${array[@]"
done
for key in ${!assoc[@]}
do
echo "${key} ---> ${assoc[${key}]}"
done
IFS=${oldIFS}
daje mi
a ---> a b c d e f
g ---> g h i j k l
muszę moje wyjście będzie:
a b ---> c d e f
g h ---> i j k l
można dodać kilka ulepszeń: 1. umieścić IFS = '' 'dla polecenia read' i nie trzeba bawić oszczędność' IFS' i przywrócenie go . 2. W pętli dodaj '(($ {# array [@]}> = 2)) || kontynuować "lub coś podobnego, aby pozbyć się pustych linii. 3. Wpisz swoje zadanie jako 'assoc [" $ {array [@] :: 2} "] = $ {array [@]: 2}'. –
@ gniourf_gniourf, Czy '$ {tablica [@] :: 2}' forma '$ {parametr: offset: długość}' z ommited 'offset', a następnie' offset' przyjmuje się zero? – Ashkan
Tak, zgadza się! –