Sto provando a scrivere uno script in bash utilizzando un array associativo. Ho un file chiamato data
:Lettura di blocchi da un file a un array associativo
a,b,c,d,e,f
g,h,i,j,k,l
Il seguente script:
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}
mi dà
a ---> a b c d e f
g ---> g h i j k l
ho bisogno la mia uscita di essere:
a b ---> c d e f
g h ---> i j k l
si potrebbe aggiungere alcuni miglioramenti: 1. mettere 'IFS =,' per il comando 'read' e non avere a giocherellare risparmio' IFS' e ripristinandola . 2. Nel ciclo aggiungi '(($ {# array [@]}> = 2)) || continua o qualcosa di simile per sbarazzarsi delle linee vuote. 3. Scrivi il tuo compito come 'assoc [" $ {array [@] :: 2} "] = $ {array [@]: 2}'. –
@gniourf_gniourf, è '$ {array [@] :: 2}' forma di '$ {parametro: offset: length}' con ommited 'offset' e quindi' offset' è assunto zero? – Ashkan
Sì, è vero! –