[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

R: bash array




>----Messaggio originale----
>Da: piviul@riminilug.it
>Data: 16/11/2011 12.47
>A: "debian-italian"<debian-italian@lists.debian.org>
>Ogg: bash array
>
>Ciao a tutti, non riesco a capire questo strano (almeno per me)
>comportamento della bash:
>> $ echo "uno, due, tre e quattro, cinque" | sed 's/[ ]*\([^,]*\)[^
>> ]*/"\1" /g'
>> "uno" "due" "tre e quattro" "cinque"
>> $ test=($(echo "uno, due, tre e quattro, cinque" | sed 's/[
>> ]*\([^,]*\)[^ ]*/"\1" /g'));
>> $ for i in "${test[@]}"; do echo $i; done;
>> "uno"
>> "due"
>> "tre
>> e
>> quattro"
>> "cinque"
>> $ test=("uno" "due" "tre e quattro" "cinque")
>> $ for i in "${test[@]}"; do echo $i; done;
>> uno
>> due
>> tre e quattro
>> cinque
>Io mi sarei aspettato che inizializzare test con test=("uno" "due" "tre
>e quattro" "cinque") oppure test=($(echo "uno, due, tre e quattro,
>cinque" | sed 's/[ ]*\([^,]*\)[^ ]*/"\1" /g')) fosse la stessa cosa ma
>non sembra essere. Qualcuno mi sa spiegare il motivo?
>
>Grazie
>
>Piviul
>
>
>-- 
>Per REVOCARE l'iscrizione alla lista, inviare un email a 
>debian-italian-REQUEST@lists.debian.org con oggetto "unsubscribe". Per
>problemi inviare un email in INGLESE a listmaster@lists.debian.org
>
>To UNSUBSCRIBE, email to debian-italian-REQUEST@lists.debian.org
>with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>Archive: 4EC3A2C9.1010801@riminilug.it">http://lists.debian.org/4EC3A2C9.1010801@riminilug.it
>
>

test=("uno" "due" "tre e quattro" "cinque")
con questa inizializzazione ogni lo spazio determina il limite di ogni 
elemento dell'array; è un'assegnazione diretta

test=($(echo "uno, due, tre e quattro,cinque" | sed 's/[ ]*\([^,]*\)[^ ]*/"\1" 
/g'))
con questa invece vai a manipolare direttamente gli spazi e di conseguenza 
anche gli elementi dell'array

io proverei un modo diverso, magari assegnando i valori a 5 variabili, fermo 
restando che siano sempre cinque
oppure un'assegnazione diretta del tipo

array[i]="uno"
...
array[y]="tre e quattro"


Reply to: